python systemrandom用于唯一数字

python systemrandom用于唯一数字,python,random,Python,Random,我需要生成一个全局唯一的整数标识符 是否使用 from random import SystemRandom SystemRandom().getrandbits(64) 是否保证是唯一的?否。通常,随机数生成器无法确保生成的数字的唯一性。(有一些特定的算法可以生成唯一的随机数序列,包括“全周期”线性同余生成器,但RNG通常不会生成唯一的随机数。) 但是,在生成唯一标识符时,有几件事需要记住(我在“”中提到)。您应该在问题中提供更多关于为什么需要唯一标识符的信息,以便我可以更好地帮助您。这并不

我需要生成一个全局唯一的整数标识符

是否使用

from random import SystemRandom
SystemRandom().getrandbits(64)

是否保证是唯一的?

否。通常,随机数生成器无法确保生成的数字的唯一性。(有一些特定的算法可以生成唯一的随机数序列,包括“全周期”线性同余生成器,但RNG通常不会生成唯一的随机数。)


但是,在生成唯一标识符时,有几件事需要记住(我在“”中提到)。您应该在问题中提供更多关于为什么需要唯一标识符的信息,以便我可以更好地帮助您。

这并不能保证,但如果您可以测试,则几乎不可能两次生成相同的数字。不久前,我在这样的地方工作,发现:


我不知道你的问题的上下文,但是如果你想得到一个唯一的代码或者类似的东西,你可以尝试使用GUID。链接:

不仅随机数不能保证唯一。它们不能保证是唯一的,否则它们就不是真正随机的。因此,从一个完美的随机生成器中获得一行100次相同的数字是完全有效的(尽管不太可能,人们可以很容易地精确计算出无键的程度)

如果需要唯一标识符,请使用UUID。他们就是为了这个目的。它们保证是独一无二的吗?不完全是这样,但假设它们足够独特,你不应该在意细节。它们是实现这一目标的标准方法。使用它们

>>> import uuid
>>> uuid.uuid4()
UUID('bc64667f-503c-416e-964d-93486a02f3fd')
“加密安全”和“保证唯一”不仅是不同的术语,而且是相互排斥的,因此到的链接可能会产生误导。