我想选择0和非常大的数字之间没有重复的随机数,比如2 ^ 64。我会这么做很多次,而且我没有太多内存,所以我不能只存储已经使用过的数字,并将每个新数字与该列表进行比较。我知道我可以将此列表存储到文件中,但这样会很慢。
是否存在可以生成无重复的随机数的算法,并不是要求将所有生成的数字存储在某处?例如,它可以是一个从0到n的数字作为输入的函数,并将每个可能的输入映射到从0到n的唯一输出。因此,为了生成100个随机唯一数字,我可以用1到100之间的参数调用此函数。(我意识到这样的函数不会是"随机,"因为每次它都是使用相同的输入调用它会产生相同的输出。但是输出序列看起来像任何其他伪随机数生成器一样随机。)
所以这真的是三个问题。
注意:有大量的"随机数没有重复"这里有问题,但我没有找到任何有#34;没有存储已经使用过的数字"抓住,所以我不认为这是重复的。