日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

python標準庫random模塊處理隨機數_python

作者:小地瓜重新去華容道工作 ? 更新時間: 2022-11-17 編程語言

前言

random模塊實現了各種分布的偽隨機數生成器。

偽隨機數:人類使用算法等方式,以一個基準(也被稱為種子,常用的是時間戳)來構造一系列數字,這些數字的特性符合人們所理解的隨機數。
一旦算法和種子都確定,產生的隨機數序列也是確定的,所以稱為偽隨機數。

1. 常用函數

常用函數 說明
random.seed(a) 設置初始化隨機種子,可輸出相同隨機數序列;a取整數或浮點數,不設置時默認以系統時間為種子
random.random() 生成一個0.0到1.0之間的隨機浮點數
random.uniform(a,b) 生成一個[a,b]之間的隨機小數,a,b取整數或浮點數
random.randint(a,b) 生成一個[a,b]之間的隨機整數
random.randrange(start,stop[,step]) 生成一個[start,stop)之間以step為步數的隨機整數;start,stop,step都是整數,step不設置默認為1
random.getrandbits(k)(seq) 生成一個占內存k位以內的隨機整數;k取長度的整數值
如果設置k=2,那么可取的數就在 (0,1,2,3) 之間隨機取
random.choice(seq) 從序列類型seq中隨機返回一個元素;seq是序列類型,如:字符串、列表、元組、集合等
random.shuffle(seq) 將序列類型中元素隨機排序,返回打亂后的序列,seq被改變(改變原列表);seq是序列類型,如:字符串、列表、元組等
random.sample(pop,k) 從pop中選取k個元素,以列表類型返回(不改變原列表);pop是序列類型,k是整數表示取k個數

常用函數使用方法:

import random

print('no seed')
for i in range(5):
    ret = random.randint(1,10)
    print(ret)

print()

print(random.random())
print(random.uniform(1,10))
print(random.randint(0,10))
print(random.randrange(1,10,5))
print(random.getrandbits(2))

print(random.choice([1,3,5,7,9]))
l=[1,2,3,4]
random.shuffle(l)
print(l)

print(random.sample(l,2))

print('*'*40)
print('has seed')
random.seed(1)
for i in range(5):
    ret = random.randint(1,10)
    print(ret)

print(random.random())
print(random.uniform(1,10))
print(random.randint(0,10))
print(random.randrange(1,10,5))
print(random.getrandbits(2))
print(random.choice([1,3,5,7,9]))

l=[1,2,3,4]
random.shuffle(l)
print(l)

print(random.sample(l,2))

顯示結果:

no seed
4
7
5
5
1
()
0.730177834774
4.05987712407
8
6
0
7
[1, 4, 2, 3]
[4, 1]
****************************************
has seed
2
9
8
3
5
0.449491064789
6.8643367545
8
1
0
9
[1, 3, 4, 2]
[4, 1]

2. 不常用函數

random模塊中不常用的函數有如下:

函數名 說明
random.getstate() 捕獲并返回生成器當前內部狀態的對象,可以把它傳遞給setstate()函數來把生成器內部狀態恢復到調用getstate()函數之前的狀態,相當于備份
random.setstate(state) state應該是getstate()函數的結果,用來把生成器當前的內部狀態恢復為state
random.betavariate(alpha,beta) Beta分布:參數的條件是alpha>0和beta > 0,返回值的范圍介于0和1之間
random.expovariate(lambd) 指數分布
random.gammavariate(alpha,beta) Gamma分布:參數的條件的alpha > 0 & beta < 0
random.gauss(mu,sigma) 高斯分布: mu是平均值,sigma是標準差
random.normalvariate(mu,sigma) 正態分布:mu是平均值,sigma是標準差
random.paretovariate(alpha) 帕累托分布:alpha是形狀參數
random.weibullvariate(alpha,beta) 威布爾分布:alpha是比例參數,beta是形狀參數

3. 使用示例

3.1 生成隨機密碼

生成的密碼包含數字和字母,可以指定密碼的位數。

# -*- coding: utf-8 -*-
"""
@File   :   隨機生成密碼.py
@E-Mail :   zoya.zh@qq.com
"""
import random
import string

def get_random_passwd(length:int):
    '''
    生成隨機密碼h
    :param length:  密碼的長度
    :return:  生成的隨機密碼
    '''
    num_count = random.randint(1,length-1)   # 密碼中數字的個數
    char_count = length - num_count  # 密碼中字母的個數

    num_list = [random.choice(string.digits) for i in range(num_count)]  # 隨機生成的數字

    char_list = [random.choice(string.ascii_letters) for i in range(char_count)]  # 隨機生成的字母

    psw = num_list + char_list

    # 隨機排列序列中的字符
    random.shuffle(psw)

    # 把得到的密碼轉成字符串的格式返回
    result = ''.join(psw)

    return result

if __name__ == '__main__':
    psw = get_random_passwd(8)
    print(psw)

測試時每次都會生成不同的密碼

8oG4GW76

261Ro923

原文鏈接:https://blog.csdn.net/sinat_41752325/article/details/126999626

欄目分類
最近更新