Python3 random 模塊

2023-03-16 09:25 更新

Python random 模塊主要用于生成隨機(jī)數(shù)。

random 模塊實(shí)現(xiàn)了各種分布的偽隨機(jī)數(shù)生成器。

要使用 random 函數(shù)必須先導(dǎo)入:

import random

查看 random 模塊中的內(nèi)容:

>>> import random
>>> dir(random)
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', '_Sequence', '_Set', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_accumulate', '_acos', '_bisect', '_ceil', '_cos', '_e', '_exp', '_floor', '_inst', '_log', '_os', '_pi', '_random', '_repeat', '_sha512', '_sin', '_sqrt', '_test', '_test_generator', '_urandom', '_warn', 'betavariate', 'choice', 'choices', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'lognormvariate', 'normalvariate', 'paretovariate', 'randbytes', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']

接下來我們使用 random() 方法返回一個(gè)隨機(jī)數(shù),它在 [0,1) 范圍內(nèi),包含 0 但不包含 1。

# 導(dǎo)入 random 包
import random

# 生成隨機(jī)數(shù)
print(random.random())

以上實(shí)例輸出結(jié)果為:

0.4784904215869241

seed() 方法改變隨機(jī)數(shù)生成器的種子,可以在調(diào)用其他隨機(jī)模塊函數(shù)之前調(diào)用此函數(shù)。

#!/usr/bin/python3
import random

random.seed()
print ("使用默認(rèn)種子生成隨機(jī)數(shù):", random.random())
print ("使用默認(rèn)種子生成隨機(jī)數(shù):", random.random())

random.seed(10)
print ("使用整數(shù) 10 種子生成隨機(jī)數(shù):", random.random())
random.seed(10)
print ("使用整數(shù) 10 種子生成隨機(jī)數(shù):", random.random())

random.seed("hello",2)
print ("使用字符串種子生成隨機(jī)數(shù):", random.random())

以上實(shí)例運(yùn)行后輸出結(jié)果為:

使用默認(rèn)種子生成隨機(jī)數(shù): 0.7908102856355441
使用默認(rèn)種子生成隨機(jī)數(shù): 0.81038961519195
使用整數(shù) 10 種子生成隨機(jī)數(shù): 0.5714025946899135
使用整數(shù) 10 種子生成隨機(jī)數(shù): 0.5714025946899135
使用字符串種子生成隨機(jī)數(shù): 0.3537754404730722

random 模塊方法

random 模塊方法如下:

方法 描述
seed() 初始化隨機(jī)數(shù)生成器
getstate() 返回捕獲生成器當(dāng)前內(nèi)部狀態(tài)的對(duì)象。
setstate() state 應(yīng)該是從之前調(diào)用 getstate() 獲得的,并且 setstate() 將生成器的內(nèi)部狀態(tài)恢復(fù)到 getstate() 被調(diào)用時(shí)的狀態(tài)。
getrandbits(k) 返回具有 k 個(gè)隨機(jī)比特位的非負(fù) Python 整數(shù)。 此方法隨 MersenneTwister 生成器一起提供,其他一些生成器也可能將其作為 API 的可選部分提供。 在可能的情況下,getrandbits() 會(huì)啟用 randrange() 來處理任意大的區(qū)間。
randrange() 從 range(start, stop, step) 返回一個(gè)隨機(jī)選擇的元素。
randint(a, b) 返回隨機(jī)整數(shù) N 滿足 a <= N <= b。
choice(seq) 從非空序列 seq 返回一個(gè)隨機(jī)元素。 如果 seq 為空,則引發(fā) IndexError。
choices(population, weights=None, *, cum_weights=None, k=1) 從 population 中選擇替換,返回大小為 k 的元素列表。 如果 population 為空,則引發(fā) IndexError。
shuffle(x[, random]) 將序列 x 隨機(jī)打亂位置。
sample(population, k, *, counts=None) 返回從總體序列或集合中選擇的唯一元素的 k 長度列表。 用于無重復(fù)的隨機(jī)抽樣。
random() 返回 [0.0, 1.0) 范圍內(nèi)的下一個(gè)隨機(jī)浮點(diǎn)數(shù)。
uniform() 返回一個(gè)隨機(jī)浮點(diǎn)數(shù) N ,當(dāng) a <= b 時(shí) a <= N <= b ,當(dāng) b < a 時(shí) b <= N <= a 。
triangular(low, high, mode) 返回一個(gè)隨機(jī)浮點(diǎn)數(shù) N ,使得 low <= N <= high 并在這些邊界之間使用指定的 mode 。 low 和 high 邊界默認(rèn)為零和一。 mode 參數(shù)默認(rèn)為邊界之間的中點(diǎn),給出對(duì)稱分布。
betavariate(alpha, beta) Beta 分布。 參數(shù)的條件是 alpha > 0 和 beta > 0。 返回值的范圍介于 0 和 1 之間。
expovariate(lambd) 指數(shù)分布。 lambd 是 1.0 除以所需的平均值,它應(yīng)該是非零的。
gammavariate() Gamma 分布( 不是伽馬函數(shù)) 參數(shù)的條件是 alpha > 0 和 beta > 0。
gauss(mu, sigma) 正態(tài)分布,也稱高斯分布。 mu 為平均值,而 sigma 為標(biāo)準(zhǔn)差。 此函數(shù)要稍快于下面所定義的 normalvariate() 函數(shù)。
lognormvariate(mu, sigma) 對(duì)數(shù)正態(tài)分布。 如果你采用這個(gè)分布的自然對(duì)數(shù),你將得到一個(gè)正態(tài)分布,平均值為 mu 和標(biāo)準(zhǔn)差為 sigma 。 mu 可以是任何值,sigma 必須大于零。
normalvariate(mu, sigma) 正態(tài)分布。 mu 是平均值,sigma 是標(biāo)準(zhǔn)差。
vonmisesvariate(mu, kappa) 馮·米塞斯分布。 mu 是平均角度,以弧度表示,介于0和 2*pi 之間,kappa 是濃度參數(shù),必須大于或等于零。 如果 kappa 等于零,則該分布在 0 到 2*pi 的范圍內(nèi)減小到均勻的隨機(jī)角度。
paretovariate(alpha) 帕累托分布。 alpha 是形狀參數(shù)。
weibullvariate(alpha, beta) 威布爾分布。 alpha 是比例參數(shù),beta 是形狀參數(shù)。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)