簡體   English   中英

python systemrandom用於唯一數字

[英]python systemrandom for unique numbers

我需要生成一個全局唯一的整數標識符。

請問使用

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

保證是唯一的?

不能。通常,隨機數生成器無法確保其生成的數字的唯一性。 (有一些特定的算法可以生成一系列唯一的隨機數,包括“全周期”線性同余生成器,但是RNG 通常不會生成唯一的隨機數。)

但是,生成唯一標識符時要牢記一些事情(我在“ 唯一隨機標識符 ”中提到了它們)。 您應該在問題中提供更多信息,說明為什么需要唯一標識符,以便我更好地幫助您。

不能保證,但是如果您進行測試,幾乎不可能兩次生成相同的數字。 一段時間之前,我正在從事類似的工作,並且發現了這一點: 我如何創建在python中具有加密安全性的隨機數?

我不知道您的問題的上下文,但是如果您想獲得唯一的代碼或類似的代碼,請嘗試使用GUID。 鏈接: https//www.geeksforgeeks.org/generating-random-ids-using-uuid-python/

不僅不能保證隨機數是唯一的。 不能保證它們是唯一的,否則它們不是真正隨機的。 因此,從一個完美的隨機生成器中連續獲取100個相同的數字是完全有效的(盡管非常不可能,但是可以很容易地精確計算出它的不可能性)。

如果需要唯一標識符,請使用UUID。 它們就是為了這個目的。 是否保證它們是唯一的? 不完全是,但可以說它們足夠獨特,您無需關心細節。 它們是執行此操作的標准方法。 使用它們。

>>> import uuid
>>> uuid.uuid4()
UUID('bc64667f-503c-416e-964d-93486a02f3fd')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM