[英]How to generate random numbers that are unique forever in python
我编写了一个脚本,每次运行该脚本时都需要一个唯一的随机数。 只是为了解释:假设我要我的脚本5次。 现在我希望所有时间生成的数字应该唯一吗?
我发现了很多有关随机数唯一性的信息,但是这些只是一次。 如果您认为不可能,那么还有其他替代方法吗?
唯一和随机是矛盾的。 对于任何真正随机的东西,都有重复的机会(很小,也许是无穷的)。
如果您想要的东西比UUID少一些麻烦(但通用性要小),则可以自己滚动一个随机数(重复的机会很小)和一个从时间派生的数字(例如Unix纪元)的组合如果脚本的运行频率少于每秒一次,则对单个实例重复一次)。
如果将随机数用作(例如)文件名的一部分,则可以生成一个名称,然后检查文件是否已存在。 如果是这样,则拒绝已使用的随机数,并生成另一个。 或者,如果您确实需要,可以将所有已经使用的随机数存储在某个地方。 在每次运行之前加载它们,添加新编号并在每次运行之后保存。
最后是形式为X(n + 1)=(X(n)* a + b)mod M的伪“随机”生成器。对于安全性/密码学来说,这是无望的,因为给定了序列的几个成员,您可以发现算法并预测所有将来的数字。 但是,如果可预测性不重要,则可以使用适当的常数来保证在生成序列的所有M个成员之前不会重复。 这些数字不是完全随机的,但是对于偶然的观察者来说,它们可能是随机的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.