簡體   English   中英

numpy.histogram / numpy中的隨機數的怪異行為?

[英]weird behavior of numpy.histogram / random numbers in numpy?

我偶然發現了Python中一些隨機數的特殊行為,特別是我使用了numpy.random模塊。

考慮以下表達式:

n = 50
N = 1000
np.histogram(np.sum(np.random.randint(0, 2, size=(n, N)), axis=0), bins=n+1)[0]

在大N的限制下,我期望二項式分布(對於感興趣的讀者,這模擬Ehrenfest模型 ),而對於大n ,則期望正態分布。 但是,典型的輸出如下所示:

數組([
1,0,0,1,0,2,0,1,0,15,0,
12、0、18、0、39、0、64、0、62、0、109,
0、97、0、107、0、114、0、102、0、92、0,
55、0、46、0、35、0、10、0、9、0、4
0、0、0、3、0、1、1
])

有了上面的陳述,我無法解釋直方圖中零的出現-我在這里遺漏了明顯的東西嗎?

您使用的histogram錯誤。 垃圾箱不在您認為的位置。 它們的取值范圍不是0到50。 它們從最小輸入值到最大輸入值。 0代表完全位於兩個整數之間的bin。

使用numpy.bincount嘗試一下:

In [31]: n = 50

In [32]: N = 5000

In [33]: np.bincount(np.sum(np.random.randint(0, 2, size=(n, N)), axis=0))
Out[33]: 
array([  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
         0,   7,  13,  22,  46,  75, 126, 220, 305, 367, 461, 550, 578,
       517, 471, 438, 314, 189, 146,  76,  50,  17,   9,   2,   1])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM