Python中的random.randint()是否真的随机?

时间:2014-01-26 20:32:10

标签: python random

所以我在Python中使用随机模块和一些循环并打印出一批数字来检查它们的样子。我注意到,当我输入时:

random.randint(0,100000)

大多数数字都是六位数字,其中一些数字为五位数而少数位于四位数。几乎没有任何一个数字。这让我怀疑rand.int是如何随机的。

2 个答案:

答案 0 :(得分:5)

在0到100000之间,90%的数字有5个数字!只有0.01%有1位数。所以这种行为是我所期待的。 编辑:并注意ignacio说的。这些数字绝对不是真正的"随机,因为这将需要某种量子事件。他们是"伪"随机数。

答案 1 :(得分:2)

要扩展ooga的答案,介于0到100,000之间,有:

  • 10位数字(0-9)
  • 90个两位数字(10-99)
  • 900个三位数字(100-999)
  • 9000个四位数字(1,000-9,999)
  • 90000五位数字(10,000-99,999)

这就是为什么你有90%的机会有一个五位数的随机数,四位数的概率为9%,三位数的概率为0.9%,依此类推。另一种看待它的方法是将少于五位数的任何正数视为在万位数中具有0(例如07,734),因此有五位数的九倍,因为有九位非数字成千上万的可能性为零。

(另外,我假设你的意思是你得到的数字大多是五位数,或者范围高达1,000,000,因为不应该有0到100,000之间的任何六位数整数。)