我很好奇数学如何解决这个问题,但我自己也不够聪明。 (我试过了)
如果您生成1000个伪随机数的列表,例如:
random_numbers = []
for i in range(1,1000):
random_numbers.append(random.randrange(1000,9999))
然后生成另一个伪随机数作为列表的索引:
final_value = random_numbers[rand.randrange(1,1000)]
直观地说,这似乎是更多随机而不是简单地生成1个伪随机值,如下所示:
number = random.randrage(1000,9999)
然而,我知道经常有很多随意性的问题,所以我想我会问你们。
答案 0 :(得分:1)
有趣的是,它是一样的!
虽然看起来很直观,你最终会得到一个更随机的数字,因为你通过反复运行随机数生成器为你的选择“添加更多随机性” - 因为randrange
approximates a uniform distribution你的样本空间最终在两个选项之间相同。我们来看一个更简单的例子:
假设您有一张52张牌的标准套牌。您可以随机从此列表中选择10张牌,同时允许自己选择重复的牌(即,您最终可能会多次选择同一张牌)。您特别选择任何卡的机会等于:
10 * 1/52 = 10/52
因为你每次挑选卡的几率是1/52,你重复10次。现在,让我们假设我们在第一组中选择了我们的牌:我们将从第二组中选择它的可能性有多大?好吧,我们现在有十分之一的机会选择它!
我们在第一个选择然后第二个选择中选择任何特定牌的概率是:
10/52 * 1/10 = 1/52
与首先挑选任何旧卡的概率完全相同!