【问题标题】:Using scipy.stats.bernoulli to simulate 1/3 probability使用 scipy.stats.bernoulli 模拟 1/3 概率
【发布时间】:2021-11-20 18:15:25
【问题描述】:

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

【问题讨论】:

  • 为什么会有 3 个结果?抛硬币或伯努利试验应该有两种结果,对吧?
  • 是的,一次翻转有两个结果,但是,例如,两次翻转会产生 4 个结果(正面 - H 和反面 -T ) -HH、HT、TH、TT 等概率 0.25 .我们可以取三个有利的,然后再扔剩下的,直到我们得到一个有利的(HH - 从 HT 0.33 TH 0.33 TT 0.33 开始)

标签: python distribution scipy.stats uniform-distribution bernoulli-probability


【解决方案1】:

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

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

只要生成的对是 [1,1]while True 就会继续尝试,但对于其他三个同样可能的结果,将返回值 0、1 或 2。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-01
    • 2022-01-08
    • 1970-01-01
    相关资源
    最近更新 更多