random模块是python标准库中用于生成伪随机数的模块。伪随机数是以随机种子和算法得到的,随机种子和算法确定后,生成的随机数序列也确定了。
没有设置随机种子a时,默认以时间戳作为随机数,如此一来,每次输出的随机数序列都是不一样的;设置随机种子a后,每次输出的的随机数序列都是一样的。
随机种子可设置值为整数、浮点数、字符串和引用等。
import random
for i in range(3): #未设置随机种子,以时间戳为随机种子
print("随机数序列第一个随机数",random.randint(10,100))
print("-"*10+"分割线"+"-"*10)
for i in range(3):
random.seed(1) #设置随机种子为整数1
print("随机数序列第一个随机数",random.randint(10,100))
print("-"*10+"分割线"+"-"*10)
for i in range(3):
random.seed("a") #设置随机种子为字符a
print("随机数序列第一个随机数",random.randint(10,100))
'''
输出结果为:
随机数序列第一个随机数 97
随机数序列第一个随机数 44
随机数序列第一个随机数 72
----------分割线----------
随机数序列第一个随机数 27
随机数序列第一个随机数 27
随机数序列第一个随机数 27
----------分割线----------
随机数序列第一个随机数 44
随机数序列第一个随机数 44
随机数序列第一个随机数 44
'''
生成一个[0,1)范围内随机浮点数。
生成一个[a,b]范围内的随机整数。
生成一个(m,n)范围内,以k为步长的随机整数。
生成一个以n比特位长的范围内整数,即返回一个在[0,2**n)范围内的随机整数。
生成一个[a,b]范围内的随机浮点数。
从非空序列seq中随机选取一个元素输出。
用于打乱非空序列seq中的元素顺序。
从序列seq中获取n个不重复的元素,组成一个list并返回。
从序列seq中随机获取n个元素,组成一个list并返回;可使用权重weights或cum_weights指定每个元素获取的概率。
seq:一个支持切片的序列,用于从中随机获取元素。
weights:可选项,为一个序列,与seq序列等长,指定seq序列中每个元素的单独权重,默认所有元素获取到的概率都相等。
cum_weights:可选项,为一个序列,与seq序列等长,指定seq序列中每个元素的累计权重,累计权重的值应从小到大;cum_weights与weights互斥,只能存在一个。
n:可选项,为整数,指定要选择的元素数量,默认为1,可大于序列长度。
import random
seq="Hello!"
print(random.choices(seq,k=2))#从序列中获取两个元素
print(random.choices(seq,k=20))#k值大于序列长度
list1=[1,1,1,1,4,40]
print(random.choices(seq,weights=list1,k=2))#指定权重,!获取概率占比40/48
list2=[2,4,6,10,100,102]
print(random.choices(seq,cum_weights=list2,k=2))#累积权重占比,值由小到大,相当于各个权重分别为weights=[2,2,2,4,90,2]
'''
结果为:
['e', '!']
['l', 'H', 'l', 'l', 'o', 'l', '!', 'H', 'e', '!']
['!', '!']
['o', 'o']
'''
随机生成n个字节的字节码。
指数分布。
返回一个1/lambd的数据,lambd为不等于零的自然数。
可查看random.py模块包含的所有函数功能。
使用random模块随机生成16位密码,密码以大写字母开头,包含大小写字母和数字。
#使用random模块随机生成16位密码,密码以大写字母开头,包含大小写字母和数字。
import random
import string
upper_litter=string.ascii_uppercase #获取大写字母列表
lower_litter=string.ascii_lowercase #获取小写字母列表
num=string.digits #获取十进制数字列表
d=random.choice(upper_litter) #获取大写首字母
#随机生成后十五位字符每种类型的字符数量
a=random.randint(1,random.randint(1,14))
b=random.randint(1,random.randint(1,14-a))
c=15-a-b
e=random.choices(upper_litter,k=a) #获取大写字母序列
f=random.choices(lower_litter,k=b) #获取小写字母序列
g=random.choices(num,k=c) #获取数字序列
h=e+f+g #拼接后十五位字符串
random.shuffle(h) #打乱后十五位字符串
PassWord=d+''.join(i for i in h) #组合所有字符串,首字母大写放开头
print(PassWord) #打印密码