random模块
random模块
此模块提供了伪随机数获取相关的方法。
- random.random():获取
[0,1.0)
范围内的浮点数
>>> import random
>>> random.random()
0.8194962938698106
- random.randint(a,b):获取
[a,b]
范围内的一个整数。
>>> random.randint(1,3)
1
>>> random.randint(1,3)
3
# 1,2,3都能取到
- random.uniform(a,b):获取
[a,b)
范围内的浮点数,如果b为小数,b也能取到。
>>> random.uniform(1,1.00000001)
1.0000000044938595
- random.randrange(start,stop[,step]):获取
[star,stop)
之间的整数,可以指定步长
print(random.randrange(1,4))
# 获取[1,4)之间的整数,可以获取到1,2,3
print(random.randrange(1,4,2))
# 可以获取到1,3
- random.choice(seq):从非空序列seq返回一个随机元素。如果seq为空,则报错。(常用)
>>> li = [1,2,3,'a','b','c',[4,5,6]]
>>> random.choice(li)
[4, 5, 6]
# 返回结果为列表内的一个随机元素
- random.sample(x,k):从x中随机抽取k个数据,组成列表返回。
>>> li = [1,2,3,'a','b','c',[4,5,6]]
>>> random.sample(li,2)
[[4, 5, 6], 3]
# 取列表内随机两个元素,组成列表返回
- random.shuffle(x):混洗。将参数指定的数据中的元素打乱,参数必须是可变的数据类型,操作的是原对象,没有返回值。
>>> random.shuffle(li)
>>> li
[3, 1, 'c', [4, 5, 6], 'a', 'b', 2]
- 应用:随机验证码。
import random
def make_code(size=6):
res = ''
for i in range(size):
num = str(random.randint(0,9)) # 随机产生一个整数
st1 = chr(random.randint(65,90)) # 获取65-90之间的的整数,通过chr函数转换成大写字母
st2 = chr(random.randint(97,122)) # 获取一个随机小写字母
res += random.choice([num,st1,st2]) # 每次取得其中一个字符,与res累加
return res
print(make_code())