投币:n次试验中具有期望值的试验频率

时间:2019-06-04 00:33:33

标签: numpy simulation probability variance

我正在模拟在10次抛硬币中扔尾巴的概率,并将该游戏运行n次。 说

n = 100, total_tosses = n * 10 = 10000

n = 1000, total_tosses = n * 10 = 100000

n = 100000, total_tosses = n * 10 = 1000000

我知道掷硬币的期望值为0.5

在10次试验中,我预计会有5/10条尾巴

但是模拟n次10次试验会产生一些有趣的结果,我无法忍受...

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()

# will return 1d array of 10 coin tosses in a single trial.
# = [1,0, ... 1,1] len = 10
def coin_game(num_flips):
    coin_tosses = []
    for x in range(num_flips):
        coin = np.random.randint(2)
        coin_tosses.append(coin)
    return coin_tosses

# will return 1d array with total num of tails, for each of the n trials.
# [3,5,2, ... 8,9,1] len = n
def run_sims(num_sims):
    num_tails = []
    for sim in range(num_sims):
        coin_tosses = coin_game(10)
        num_tails.append(sum(coin_tosses))
    return np.array(num_tails)

# ---Main---
num_trials = 10000
all_tails = run_sims(num_trials)
sns.countplot(all_tails)
plt.show()

为什么总试验次数与显示期望值的试验频率之间存在关系,又称5/10抛硬币是尾巴。

对于1000次试验:大约250次试验的尾巴为5/10

对于10000次试验:大约2500次试验的尾巴为5/10

对于100000次试验:大约25000次试验的尾巴为5/10

是什么原因导致这种行为?

大约,为什么freq(5/10尾数)= n / 4

1 个答案:

答案 0 :(得分:2)

这只是基本概率(更具体地说是二项分布)。您有2^10个可能的结果,其中252个结果是“成功”(包含5条尾巴)。这就是为什么您大致看到n/4的这些结果的原因。

enter image description here

从更一般的意义上讲,您可以使用以下公式解决此问题:

enter image description here

其中n是试验次数,k是成功次数,p是成功概率。

对于您的问题,答案是:

(10! / 5!(10 - 5)!) * (1 / 2)^5 * (1 - 1/2)^5 == 0.24609375