📜  生成随机唯一数字 (1)

📅  最后修改于: 2023-12-03 15:40:52.189000             🧑  作者: Mango

生成随机唯一数字

在很多场景下需要生成唯一的数字,比如生成随机的订单号、用户ID等,本篇文章将介绍如何生成随机唯一数字。

UUID

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 是最为常见和推荐的方式,因为它不仅可以保证唯一性,还可以表示时间和空间信息。如果不依赖于时间戳,推荐使用 uuid.uuid4(),否则可以使用 uuid.uuid1()

import uuid

print(uuid.uuid4())  # UUID('f4524c91-c926-4a1f-b8f5-24e36b408dc9')
print(uuid.uuid1())  # UUID('22b92740-308e-11ec-b951-10bf487ceb6c')

以上就是生成随机唯一数字的介绍和示例,希望能够帮助你解决此类问题。