首页 > 解决方案 > 使用 scipy.stats.bernoulli 模拟 1/3 概率

问题描述

我们的任务是重新创建著名的公平硬币翻转 (p=0.5),仅使用bernoulli.rvs()生成具有均匀离散分布的函数(结果 = 0,1,2)。是否可以只使用伯努利函数形式scipy.stats

标签: pythondistributionscipy.statsuniform-distributionbernoulli-probability

解决方案


是的,可以使用接受/拒绝(如您在评论中所述)。我不知道你为什么问这个,因为你似乎知道怎么做,但既然没有人发布实现,你就去吧:

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。


推荐阅读