2016-09-24 64 views
-2

我對Python很新,所以我不知道很多東西。 因此,可以說我有這段代碼random.randrange似乎並不是隨機的

for i in range(10000): 
n = random.randrange(1, 1000**20) 
ar.append(n) 
print(n) 

最小數我得到了10000的總是在這個特殊的例子比1000^20 較小的3-4數字中最小的數字是

2428677832187681074801010996569419611537028033553060588 
8134740394131686305349870676240657821649938786653774568 
44697837467174999512466010709212980674765975179401904173 
50027463313770628365294401742988068945162971582587075902 
61592865033437278850861444506927272718324998780980391309 
71066003554034577228599139472327583180914625767704664425 
90125804190638177118373078542499530049455096499902511032 
100371114393629537113796511778272151802547292271926376588 

我已經嘗試了多個範圍多次,每次我得到相同的結果。也許我做錯了什麼?

+2

奇怪的是,約10,000個生成的值約爲最大值的1/10萬分之一? – TigerhawkT3

+1

由於10,000是10 ** 4,我不明白這是多麼令人驚訝。 –

+1

爲什麼不研究看到這些值而不是較小值的概率? –

回答

1

好的,讓我們用小數字來清楚地說明。

假設您從1到100之間選擇一個隨機數,包含性。

有多少個1位數字? 9,從1到9.對於2位數字,它是從10到99,90個數字。對於3位數字,它只是1,100。由於它是一個隨機選取,所以挑選其中一個100(9 + 90 + 9)數字的概率是相等的,並且應該直觀地清楚它是1/100。但由於有90位2位數字,所以選擇2位數字的概率爲90/100或9/10。 1位數字是9/100,而唯一的3位數字是1/100。

我希望能回答這個問題。

+0

哦,我從來沒有想過這樣。謝謝! – harambe