python - 使用 scipy.stats.bernoulli 模拟 1/3 概率
问题描述
我们的任务是重新创建著名的公平硬币翻转 (p=0.5),仅使用bernoulli.rvs()
生成具有均匀离散分布的函数(结果 = 0,1,2)。是否可以只使用伯努利函数形式scipy.stats
?
解决方案
是的,可以使用接受/拒绝(如您在评论中所述)。我不知道你为什么问这个,因为你似乎知道怎么做,但既然没有人发布实现,你就去吧:
from scipy.stats import bernoulli
import numpy as np
MATCHSET = np.array([[0,0], [0,1], [1,0]])
def gen_uniform_3():
while True:
ary = bernoulli.rvs(1/2, size = 2)
for i in range(3):
if np.array_equal(ary, MATCHSET[i]):
return i
while True
只要生成的对是 ,就会继续尝试,[1,1]
但对于其他三个同样可能的结果,将返回值 0、1 或 2。
推荐阅读
- iis - 未创建 stdoutLog
- javascript - 如何确保在 safari、firefox 和 chrome 中以相同方式处理 tinymce 5 编辑器区域的模糊事件?
- racket - 为什么我的函数总是返回一个空列表?
- java - 如何使用 ProcessLifecycleOwner 捕获生命周期事件?
- python - 带依赖项的 Siblig 导入
- typescript - TypeScript 3.5 中的直接或间接引用
- xamarin.forms - 在启动期间调用 Database.Migrate() 时崩溃
- actionresult - 方法内的 RedirectToAction 不起作用
- c# - C#如何修复文件到二进制到字符串到二进制转换期间的数据丢失
- python - 如何在每个组中查找一个字符串,然后比较其他列的值,然后将其存储在一个新的列中