📅  最后修改于: 2023-12-03 15:40:52.189000             🧑  作者: Mango
在很多场景下需要生成唯一的数字,比如生成随机的订单号、用户ID等,本篇文章将介绍如何生成随机唯一数字。
UUID
(Universally Unique Identifier)是指可以被计算机系统唯一辨识的数字标识符,通常由 32 个16进制数字构成,以连字号分为5段,形如:xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx(其中,M 代表 UUID 版本号,N 代表 UUID 变体号)。UUID 可以确保时间和空间的唯一性,也称为 GUID(Globally Unique Identifier)。
Python 3 自带 uuid
模块,可以方便地生成 UUID:
import uuid
print(uuid.uuid1()) # UUID('22b92740-308e-11ec-b951-10bf487ceb6c')
print(uuid.uuid4()) # UUID('f4524c91-c926-4a1f-b8f5-24e36b408dc9')
生成随机数的方法是,从一个指定的范围内,例如 [0, 100],随机返回一个整数。这个随机数理论上不具有唯一性,但是在一定的范围内,可能会遇到重复的情况,需要根据业务场景做相应的处理。
Python 3 的 random
模块提供了生成随机数的函数,其中 random.randint(a, b)
函数返回 [a, b] 之间的随机整数:
import random
print(random.randint(0, 100)) # 42
print(random.randint(0, 100)) # 81
如果要保证生成的随机数具有唯一性,可以将生成的数字存储到一个集合中,每次生成随机数之前判断该数字是否已经在集合中出现过,如果出现过,则重新生成随机数。
nums_set = set()
while True:
num = random.randint(0, 100)
if num not in nums_set:
nums_set.add(num)
break
print(num) # e.g. 42
生成随机唯一数字的方法有很多,但是 UUID
是最为常见和推荐的方式,因为它不仅可以保证唯一性,还可以表示时间和空间信息。如果不依赖于时间戳,推荐使用 uuid.uuid4()
,否则可以使用 uuid.uuid1()
。
import uuid
print(uuid.uuid4()) # UUID('f4524c91-c926-4a1f-b8f5-24e36b408dc9')
print(uuid.uuid1()) # UUID('22b92740-308e-11ec-b951-10bf487ceb6c')
以上就是生成随机唯一数字的介绍和示例,希望能够帮助你解决此类问题。