我需要连续生成 1 - 10000 范围内的随机数,不能重复。 有什么建议吗?
描述:我们正在为我们的应用程序构建一个新版本,该版本在 Sqlite DB 中维护记录。在我们应用程序的最后一个版本中,我们没有为每条记录提供唯一的密钥。但现在有了新的升级版本,我们需要支持从上一个版本的数据库导入功能。所以我们要做的是,从旧数据库中读取每条记录,并为唯一密钥生成一个随机数,并将其存储在新数据库中。这里我们很多需要连续导入多达10000条记录。
好吧,最终你要么必须停止生成它们,要么你将复制它们。
在计算机上,您的选择非常有限,只有伪随机数生成器 (PRNG),并且考虑到它们从不重复的限制,那么 PRNG 是您的最佳选择 - 真正的随机数据偶尔会重复一个数字。
就您而言,我会考虑使用大型 PRNG(32 位或更大)来洗牌您的 10,000 个数字,然后按洗牌顺序发送数字。
一旦它们用完,您就可以再次洗牌 - 因为 PRNG 太大了,您可以在复制序列之前多次遍历这 10k 个数字。
向我们提供有关您所做工作的更多信息,我们可能会给出更好的答案。
-Adam