Python使用uuid生成随机数

uuid

UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准。其目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。uuid可以根据不同的条件生成不同的验证码,并且这些验证码之间没有任何联系,通过观察一个验证码无法猜测出其他的验证码,很适合作为unique_id的生成

Python中五种uuid生成方法

在Python中,如果要使用uuid生成验证码,前提import uuid

  • uuid.uuid1() 基于MAC地址、时间戳、随机数来生成唯一的uuid
  • uuid.uuid2() 基于分布式计算环境DCE(python中没有该函数),算法与uuid1相同,但是将时间戳的前四位换成posix的UID
  • uuid.uuid3() 基于计算名字与命名空间,同一命名空间不同名字结果不同,同一名字不同命名空间结果不同,但是相同名字相同命名空间会是结果一直
  • uuid.uuid4() 基于(伪)随机数,有一定的重复概率
  • uuid.uuid5() 基于名字,与算法uuid3大致相同

实例

import uuid
name = "asdasd" #随机设定
#namespace = "sdfsdf" #随机设定
namespace = uuid.NAMESPACE_URL#个人认为这是最靠谱的一种使用方法

x1 = uuid.uuid1()
#Python中不存在uuid2
x3 = uuid.uuid3(namespace,name)
x4 = uuid.uuid4()
x5 = uuid.uuid5(namespace,name)

注意事项

  • Python中没有基于分布式计算环境DCE,故uuid2不使用
  • uuid4为伪随机数,有一定概率重复,一般不使用
  • uuid1适合全球范围内的环境下使用
  • uuid3与uuid5是最常用的,同时也可以满足一种控制变量法的设定随机变量,在购票系统中就可以设定同一个名字但是不同的票种,便会生成几乎没有任何关系的unique_id
  • 其实,uuid3和uuid5的使用对命名空间与名字的要求并不严格,对名字而言,完全可以采用同样的名字然后加上当时的时间戳,便可以产生完全不同的结果

参考

https://www.cnblogs.com/dkblog/archive/2011/10/10/2205200.html
https://baike.baidu.com/item/UUID/5921266?fr=aladdin
https://www.cnblogs.com/franknihao/p/7307224.html

你可能感兴趣的:(uuid)