Пытался подтвердить Центральную предельную теорему, сгенерированный сюжет немного сбивает с толку - PullRequest
1 голос
/ 06 июля 2019

Периодические пропуски на участке

Реализует доказательство центральной предельной теоремы

X = [0]*10000000
i = 100
for j in range(i):
    a = (np.random.randint(0, high = 4, size = 10000000 ))
    X = X+a
plt.hist(X, bins='auto')
plt.show()
# print (Counter(X))

Ответы [ 2 ]

1 голос
/ 06 июля 2019

Это артефакт построения команды hist.Открыв окно графика, измените размер окна.Вы увидите, как тонкие вертикальные полосы появляются и исчезают.

Если я изменю команду hist на

plt.hist(X, bins=np.arange(X.min()-1, X.max()+2)

, я получу

histogram

0 голосов
/ 06 июля 2019

Автоматический биннинг plt.hist взаимодействует с randint, чтобы вызвать этот артефакт.Используйте np.random.random, чтобы преодолеть это.

import numpy as np
import matplotlib.pyplot as plt

X = np.array([0]*10000000)
i = 100
for j in range(i):
    a = np.random.random(10000000) * 4 # multiplying by 4 to simulate high=4 in OP's code
    X = X+a
plt.hist(X, bins='auto')
plt.show()

Обновление: как упоминает @Warren, проблема заключалась в автоматическом поведении биннинга plt.hist.Равномерно выбирая числа вместо целых, эта проблема исчезает.Если вы должны использовать randint, его решение работает.

enter image description here

...