random.randrange似乎不是随机的

时间:2016-09-24 22:21:15

标签: python random

我对python很新,所以我不知道很多东西。 所以我说我得到了这段代码

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

我已多次尝试过多个范围,每次都得到相同的结果。也许我做错了什么?

1 个答案:

答案 0 :(得分: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。

我希望能回答这个问题。