Я симулирую вероятность подбрасывания хвостов в 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 хвостов
Но симуляция 10 испытаний n раз даетнекоторые интересные результаты, которые я не могу обернуть вокруг себя ...
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