硬币等于骰子(在统计学意义上)

来源:互联网 发布:数据库中范式的作用 编辑:程序博客网 时间:2024/05/17 14:24

硬币和骰子是统计学家们的心头好。没有硬币,统计学家根据骰子也能创造出来一枚硬币,没有骰子,统计学家们也能根据硬币创造出来一个骰子。

如何通过投掷一枚硬币产生各种概率

概率、随机数、随机数生成函数(面试题)


这里写图片描述

硬币等于骰子,are you kidding me?我读书少,你不要骗我。
是在统计学上了,物理上显然是不同的。
此话怎讲?

统计学意义上的硬币,其实是产生 {12 ,12 }  的概率分布;统计学意义上的骰子,则是产生 {16 ,16 ,16 ,16 ,16 ,16 } 的概率分布。想要证明二者是等价的,需证明:

{12 ,12 }{16 ,16 ,16 ,16 ,16 ,16 }{16 ,16 ,16 ,16 ,16 ,16 }{12 ,12 } 

下来,我们会看到整个的解题思路的本质,在构造新的样本空间,再在新的样本空间中适当的取舍,构造符合要求的概率。

从硬币到骰子

思路在二进制,需抛硬币三次(2 3 >6 ),每次正面向上记为1,反面向上记为0,将得到的结果排列,得到 000111 的八种等可能情况,策略如下:

001101020113100410151106 

000,111 重新投掷。

# pythonfrom random import random                    # random()函数产生0-1均匀分布from collections import defaultdictdef coin():    return 1 if random() < .5 else 0                    # 仿真硬币0-1分布def coin2dice():    while True:        r1, r2, r3 = coin(), coin(), coin()        r = r1+r2*2+r3*2**2        if r != 0 and r != 7:                            # 否则继续循环,直到            return rif __name__ == '__main__':    coll = defaultdict(int)    N = 10**6    for i in range(N):        coll[coin2dice()] += 1    for i in coll:        print(i, coll[i]/N)1 0.1670482 0.1663323 0.166034 0.1671825 0.1666746 0.166734

从骰子到硬币

只需一步,奇偶性判断,对骰子的样本空间 {1,2,3,4,5,6}  进行重新组合,二分为 {1,3,5},{2,4,6} 

{1,3,5}1{2,4,6}0 

自然也可将骰子的样本空间二分为:{1,2,3},{4,5,6} ,只要二者平分1(对应的概率均为 12  )即可。

def dice2coin():    r = int(6*random()+1)    return 1 if r%2==0 else 0if __name__ == '__main__':    coll = collectiondict(int)    N = 10**6    for i in range(N):        coll[dice2coin()] += 1    for i in coll:        print(i, coll[i]/N)0 0.499611 0.50039

2情况数的硬币 等价于 6情况数的骰子的意义是什么

意义在于概率分布的转化,互相转化,一种概率分布向另一种概率分布的转化。

考虑如下的两种场景,

场景1:从两个人中选出一人做某事,费厄泼赖(fair play),两人被选中的概率均为 12  ,此时如果你手头没有一枚硬币,供你通过正反得 12 ,12  的概率分布,而恰有一个骰子,怎么办,此时就用到了如何通过掷骰子得抛硬币的概率分布,也即 {16 ,16 ,16 ,16 ,16 ,16 } {12 ,12 } ,如前所述,通过奇偶性判断,抛出的点数为奇数,则指派其中一人,点数为偶数,则指派另一个人。

场景2:从6个人中费厄泼赖地选出一人做某事。此时你没有骰子,只有硬币。如前所述,抛三次,001110 分别对应于16 000/111 则重新抛掷(以构造情况数为6的等概率分布)。

0 0
原创粉丝点击