天天看点

【Python】random模块生成多种类型随机数

开发和测试过程中我们经常遇到需要随机数的场景,比如为了用户密码更安全我们有时会加入随机码,也就是将用户原密码连接上一串随机字符然后加密保存,又比如我们可能需要随机展示某张图片等等。这篇文章主要介绍了各种生成随机数的方法,主要用到了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)


           

继续阅读