【发布时间】:2023-03-04 23:17:02
【问题描述】:
假设我的系统需要定期提供一个唯一的整数 id,介于 1 和 10^20 之间,来自类似 --
的函数function getNextRandomUniqueId(index:BigInt, min:BigInt, max:BigInt, seed:BigInt): BigInt { ? }
id = getNextRandomUniqueId(index=42, min=1, max=10^20, seed=0)
这些 id 需要随着索引的增加以随机顺序提供,而不是按顺序提供。一旦提供了 id,就不能再次提供,只要索引增加。我的系统无法存储所有要发行的号码的随机列表,或者所有发行的号码,太多了。我也不想依赖诸如随机 UUID 之类的东西,它极不可能发生冲突,但不能保证。
如何做到这一点?有一种确定性的数学方法来随机迭代一组连续整数而不重复和不存储?
编辑:将 1^20 固定为 10^20
【问题讨论】:
-
我想你的意思是 10^20? 1^20 是 1。
标签: algorithm math random integer