python - 在有偏的骰子上寻找概率
问题描述
我必须模拟一个有偏差的模具,这样 6 的发生率超过 50%。我能够使用:
from random import randint,choice
def bdie():
out = random.randint(0,2)
if (out==1 or out == 2):
return 6
else:
r = choice([i for i in range(1,7) if i not in [6]])
return r
def bdthrow(n):
output = []
for i in range(0,n):
if n>0 & n<=100000000:
outcome = bdie()
output.append(outcome)
else:
print("Invalid")
print(output)
其输出将是:
[6、6、6、6、6、3、6、3、5、4]
现在在这个有偏差的骰子上,我应该找到顶面为 5 的概率,我需要找到骰子每个面的平均计数。
现在在纸上求解总和很容易,我可以在其中找到概率,但我不确定如何在 python 中实现它。
解决方案
如果我理解正确,您正在寻找获得 5 的无偏估计量。这样的估计量可以是掷骰子足够次数时获得的 5 的数量。即# fives / n
。
从内存的角度来看,我建议使用defaultdict
. 也不需要检查n
每一轮的值。
from random import randint,choice
from collections import defaultdict
def bdie():
out = randint(0,2)
if (out==1 or out == 2):
return 6
else:
r = choice([i for i in range(1,7) if i not in [6]])
return r
def bdthrow(n):
output = defaultdict(int)
for i in range(0,n):
outcome = bdie()
output[outcome] +=1
return (float(output[5])/n)
代码几乎没有其他优化,但天真地应该可以工作。
推荐阅读
- php - 添加 php.ini 文件后 my_phpinfo.php 为空
- kubernetes - 什么是 Kubernetes 中的负载均衡器,像 GKE 这样不同的 Kubernetes 引擎如何拥有自己的负载均衡器
- php - 尝试全局安装软件包时的 Composer 问题
- javascript - 在 Elementor 的 Fullpage JS 中添加水平幻灯片之间的过渡效果
- android - iOS 到 Android 加密
- ios - handleInputModeList 识别 touchUpInside 事件
- python - 尝试运行 tensorflow 模型训练脚本时出现 Zsh 错误
- python - 无法使用请求解析来自网站的所有下一页链接
- ruby-on-rails - Gem Install Rails Giving Error: Failed To Build Gem Native Exension CentOS
- python - 是否有像 Symfony 控制台组件这样的 Python CLI 包?