Con*_*ion 32 python random uuid guid uniqueidentifier
我需要从Python生成唯一的64位整数.我已经检查了UUID模块.但它生成的UUID是128位整数.所以那不行.
你知道在Python中生成64位唯一整数的方法吗?谢谢.
Joh*_*ooy 40
只需屏蔽128bit int
>>> import uuid
>>> uuid.uuid4().int & (1<<64)-1
9518405196747027403L
>>> uuid.uuid4().int & (1<<64)-1
12558137269921983654L
Run Code Online (Sandbox Code Playgroud)
这些或多或少是随机的,所以你碰撞的可能性很小
也许uuid1的前64位使用起来更安全
>>> uuid.uuid1().int>>64
9392468011745350111L
>>> uuid.uuid1().int>>64
9407757923520418271L
>>> uuid.uuid1().int>>64
9418928317413528031L
Run Code Online (Sandbox Code Playgroud)
这些主要基于时钟,随机性更低,但独特性更好
S.L*_*ott 23
64位唯一
计数有什么问题?一个简单的计数器将创建唯一的值.这是最简单的,很容易确保你不会重复一个值.
或者,如果计数不够好,试试这个.
>>> import random
>>> random.getrandbits(64)
5316191164430650570L
Run Code Online (Sandbox Code Playgroud)
根据种子和使用随机数生成器的方式,这应该是唯一的.
当然,您可以错误地执行此操作并获得重复的随机数序列.对于如何处理启动和停止程序的种子,必须非常小心.
来自OS的随机数生成器而不是PRNG的64位随机数:
>>> from struct import unpack; from os import urandom
>>> unpack("!Q", urandom(8))[0]
12494068718269657783L
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29889 次 |
| 最近记录: |