重复:
我想要一个伪随机数生成器,可以以随机顺序生成没有重复的数字。
例如:
random(10)
可能返回 5, 9, 1, 4, 2, 8, 3, 7, 6, 10 等等。
除了改变数字范围并对其进行洗牌,或者检查生成的列表是否有重复值之外,还有更好的方法吗?
编辑:
同时,我希望它在生成大量数字时具有高效性,而无需生成整个范围的数字。
编辑:
我看到每个人都建议使用洗牌算法。但是如果我想生成大量随机数(1024字节+),那么与只使用常规 RNG 并将其插入集合直到达到指定长度相比,那种方法将需要更多的内存,对吧?这方面没有更好的数学算法吗?