Python random 模块简介
Python 提供的 random 模块实现了各种分布式的伪随机数生成器。
常用函数
random.seed(a)
设置初始化随机因子,可以输出相同随机序列,a 取值整数或浮点数,不设置时默认系统时间作为种子;
import random print('不指定种子') for i in range(5): res = random.randint(1, 20) print(res, end=' ') print() print('指定种子') random.seed(2) for i in range(5): res = random.randint(1, 20) print(res, end=' ')
运行三次效果如下
''' 不指定种子 2 10 13 17 6 指定种子 2 3 3 12 6 不指定种子 17 13 1 7 6 指定种子 2 3 3 12 6 不指定种子 3 18 10 10 9 指定种子 2 3 3 12 6 '''
random.random()
生成一个大于0小于1的浮点数
for i in range(5): print(random.random()) ''' 0.07538896244449411 0.7265073416776953 0.4081894266461512 0.6509242609401321 0.6651385639220018 '''
random.uniform(a,b)
生成一个a<= 随机数 <= b
for i in range(5): print(random.uniform(1, 2)) ''' 1.3319566333129689 1.8690791564469724 1.5062883650223848 1.5110049422767893 1.0468486028150155 '''
random.randint(a,b)
生成范围内随机整数
for i in range(5): print(random.randint(1, 10)) ''' 9 2 7 8 2 '''
random.randrange(start,stop,[step])
按范围生成随机数,可以指定步长,默认步长1
for i in range(5): print(random.randrange(1, 10,2)) ''' 7 3 9 3 7 '''
random.choice(seq)
从迭代对象中随机返回一个元素
list_1 = [1,2,3,'a','b','c'] for i in range(5): print(random.choice(list_1)) ''' 2 b 3 a a '''
随机数案例
生成一个含数字和字母的字符串
import string import random def get_random_pwd(length): ''' 生成一个含有数字和字母的字符串 :param length: 字符串长度 :return: ''' num_cnt = random.randint(1, length - 1) letter_cnt = length - num_cnt #数字随机序列 num_list = [random.choice(string.digits) for _ in range(num_cnt)] #字母随机序列 letter_list = [random.choice(string.ascii_letters) for _ in range(letter_cnt)] #拼装 all_list= num_list + letter_list #乱序 random.shuffle(all_list) res = ''.join([i for i in all_list]) return res for i in range(5): print(get_random_pwd(8)) ''' 6680g763 137Yi7O0 1l1w08Gz 6066464w X5PcxdDU '''