開發和測試過程中我們經常遇到需要随機數的場景,比如為了使用者密碼更安全我們有時會加入随機碼,也就是将使用者原密碼連接配接上一串随機字元然後加密儲存,又比如我們可能需要随機展示某張圖檔等等。這篇文章主要介紹了各種生成随機數的方法,主要用到了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)