如何在python中生成永远唯一的随机数

如何在python中生成永远唯一的随机数,python,random,Python,Random,我编写了一个脚本,每次运行该脚本时,我都需要一个唯一的随机数。只是为了解释:假设我想要我的脚本5次。现在我想在任何时候生成的数字都应该是唯一的 我已经找到了很多关于随机数唯一性的信息,但这些只是一次。 如果您认为不可能,那么是否有其他方法等?您可以使用uuid生成RFC 4122 uuid(通用唯一标识符)。例如,生成随机UUID: In [1]: import uuid In [2]: u = uuid.uuid4() In [3]: u Out[3]: UUID('deb1064a-e8

我编写了一个脚本,每次运行该脚本时,我都需要一个唯一的随机数。只是为了解释:假设我想要我的脚本5次。现在我想在任何时候生成的数字都应该是唯一的

我已经找到了很多关于随机数唯一性的信息,但这些只是一次。
如果您认为不可能,那么是否有其他方法等?

您可以使用
uuid
生成RFC 4122 uuid(通用唯一标识符)。例如,生成随机UUID:

In [1]: import uuid

In [2]: u = uuid.uuid4()

In [3]: u
Out[3]: UUID('deb1064a-e885-4ebc-9afc-f5291120edf8')
要获取编号,请访问
uuid.uuid
对象的编号:

In [4]: u.int
Out[4]: 242844464987419882393579831900689854160

您可以使用
uuid
生成RFC4122 uuid(通用唯一标识符)。例如,生成随机UUID:

In [1]: import uuid

In [2]: u = uuid.uuid4()

In [3]: u
Out[3]: UUID('deb1064a-e885-4ebc-9afc-f5291120edf8')
要获取编号,请访问
uuid.uuid
对象的编号:

In [4]: u.int
Out[4]: 242844464987419882393579831900689854160

您可以使用
uuid
生成RFC4122 uuid(通用唯一标识符)。例如,生成随机UUID:

In [1]: import uuid

In [2]: u = uuid.uuid4()

In [3]: u
Out[3]: UUID('deb1064a-e885-4ebc-9afc-f5291120edf8')
要获取编号,请访问
uuid.uuid
对象的编号:

In [4]: u.int
Out[4]: 242844464987419882393579831900689854160

您可以使用
uuid
生成RFC4122 uuid(通用唯一标识符)。例如,生成随机UUID:

In [1]: import uuid

In [2]: u = uuid.uuid4()

In [3]: u
Out[3]: UUID('deb1064a-e885-4ebc-9afc-f5291120edf8')
要获取编号,请访问
uuid.uuid
对象的编号:

In [4]: u.int
Out[4]: 242844464987419882393579831900689854160

独特性和随机性是矛盾的。对于任何真正随机的东西,都有(很小,也许是无限小的)重复的机会

如果您想要比UUID更简单(但通用性更低)的东西,您可以使用随机数(重复的机会很小)和从时间派生的数字(例如Unix历元,如果脚本运行频率低于每秒一次,则不会对单个实例重复)

如果随机数用作(比如)文件名的一部分,您可以生成一个名称,然后检查该文件是否已经存在。如果是,则拒绝已使用的随机数,并生成另一个随机数。或者如果你真的需要,你可以把所有已经用过的随机数存储在某个地方。在每次运行前加载它们,添加新编号并在每次运行后保存


最后还有形式为X(n+1)=(X(n)*a+b)mod M的伪“随机”生成器。这些生成器对于安全性/密码学来说是没有希望的,因为给定序列中的几个成员,您可以发现算法并预测未来的所有数字。但是,如果这种可预测性不重要,那么使用适当的常数,您可以保证在序列的所有M个成员生成之前不会重复。这些数字根本不是随机的,但在一个偶然的观察者看来,它们可能是随机的。

唯一和随机是矛盾的。对于任何真正随机的东西,都有(很小,也许是无限小的)重复的机会

如果您想要比UUID更简单(但通用性更低)的东西,您可以使用随机数(重复的机会很小)和从时间派生的数字(例如Unix历元,如果脚本运行频率低于每秒一次,则不会对单个实例重复)

如果随机数用作(比如)文件名的一部分,您可以生成一个名称,然后检查该文件是否已经存在。如果是,则拒绝已使用的随机数,并生成另一个随机数。或者如果你真的需要,你可以把所有已经用过的随机数存储在某个地方。在每次运行前加载它们,添加新编号并在每次运行后保存


最后还有形式为X(n+1)=(X(n)*a+b)mod M的伪“随机”生成器。这些生成器对于安全性/密码学来说是没有希望的,因为给定序列中的几个成员,您可以发现算法并预测未来的所有数字。但是,如果这种可预测性不重要,那么使用适当的常数,您可以保证在序列的所有M个成员生成之前不会重复。这些数字根本不是随机的,但在一个偶然的观察者看来,它们可能是随机的。

唯一和随机是矛盾的。对于任何真正随机的东西,都有(很小,也许是无限小的)重复的机会

如果您想要比UUID更简单(但通用性更低)的东西,您可以使用随机数(重复的机会很小)和从时间派生的数字(例如Unix历元,如果脚本运行频率低于每秒一次,则不会对单个实例重复)

如果随机数用作(比如)文件名的一部分,您可以生成一个名称,然后检查该文件是否已经存在。如果是,则拒绝已使用的随机数,并生成另一个随机数。或者如果你真的需要,你可以把所有已经用过的随机数存储在某个地方。在每次运行前加载它们,添加新编号并在每次运行后保存


最后还有形式为X(n+1)=(X(n)*a+b)mod M的伪“随机”生成器。这些生成器对于安全性/密码学来说是没有希望的,因为给定序列中的几个成员,您可以发现算法并预测未来的所有数字。但是,如果这种可预测性不重要,那么使用适当的常数,您可以保证在序列的所有M个成员生成之前不会重复。这些数字根本不是随机的,但在一个偶然的观察者看来,它们可能是随机的。

唯一和随机是矛盾的。对于任何真正随机的东西,都有(很小,也许是无限小的)重复的机会

如果您想要比UUID更简单(但通用性更低)的东西,您可以使用随机数(重复的机会很小)和从时间派生的数字(例如Unix历元,如果脚本运行频率低于每秒一次,则不会对单个实例重复)

如果随机数用作(比如)文件名的一部分,您可以生成一个名称,然后检查该文件是否已经存在。如果是的话,