天天看點

【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)


           

繼續閱讀