2016-09-24 81 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