本文共 2771 字,大约阅读时间需要 9 分钟。
开发和测试过程中我们经常遇到需要随机数的场景,比如为了用户密码更安全我们有时会加入随机码,也就是将用户原密码连接上一串随机字符然后加密保存,又比如我们可能需要随机展示某张图片等等。这篇文章主要介绍了各种生成随机数的方法,主要用到了random模块。
# 1. 生成随机小数 # 2. 生成随机整数 # 3. 拿指定列表中数据生成随机数 # 4. 获取纯数字可重复随机数 # 5. 获取纯数字不可重复随机数 # 6. 获取数字和字母组合的随机数,可重复# 7. 获取数字和字母组合的随机数,不可重复
以下是主要示例代码:
# -*- coding: utf-8 -*-'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''#作者:cacho_37967865#博客:https://blog.csdn.net/sinat_37967865#文件:randomData.py#日期:2019-09-02#备注:多种随机数生成方法 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''import random# 1. 生成随机小数def get_random(): data1 = random.random() data2 = random.uniform(0,1) print("随机大于0且小于1之间的小数:",data1) print("随机一个大于N小于M的小数:",data2)# 2. 生成随机整数def get_randint(): data1 = random.randint(1,5) data2 = random.randrange(1,10,2) data3 = random.randrange(2, 10, 2) print("随机一个大于等于1且小于等于5的整数:",data1) print("随机一个大于等于1且小于10之间的奇数,其中2表示递增基数:",data2) print("随机一个大于等于1且小于10之间的偶数,其中1表示递增基数:", data3)# 3. 拿指定列表中数据生成随机数def get_fromList(): list = ['123','abc',1,[1,2]] data1 = random.choice(list) data2 = random.sample(list,4) print("从列表随机选择数:",data1) print("从列表随机选择N个数:", data2) # 拿出来的数不会重复,而且数量要小于等于列表长度 random.shuffle(list) print("random.shuffle(list)打乱列表的顺序:", list)# 4. 获取纯数字可重复随机数def get_verifyCode(n): codes = [] for i in range(n): num = str(random.randint(0,9)) codes.append(num) code = ''.join(codes) print("生成N位数的数字随机数,可重复:",code) return(code)# 5. 获取纯数字不可重复随机数def get_difCode(n): codes = [] for i in range(10): codes.append(str(i)) code = random.sample(codes, n) code = ''.join(code) print("生成N位数的数字随机数,不可重复:",code) return(code)# 6. 获取数字和字母组合的随机数,可重复def get_mixCode(n): codes = [] temp_code = [] for i in range(10): codes.append(str(i)) for i in range(97,123): codes.append(chr(i)) # 26个小写英文字母 for i in range(97,123): codes.append(chr(i).upper()) # 26个大写英文字母 for i in range(n): n_code = random.choice(codes) temp_code.append(n_code) code = ''.join(temp_code) #print("生成N位数的数字随机数,可重复:",code) return(code)# 7. 获取数字和字母组合的随机数,不可重复def get_mix_difCode(n): codes = [] for i in range(10): codes.append(str(i)) for i in range(97,123): codes.append(chr(i)) # 26个小写英文字母 for i in range(97,123): codes.append(chr(i).upper()) # 26个大写英文字母 code = random.sample(codes, n) code = ''.join(code) #print("生成N位数的数字随机数,不可重复:",code) return(code)if __name__ == '__main__': get_random() #get_randint() #get_fromList() #get_verifyCode(6) #get_difCode(6) #get_mixCode(6)