python隨機數模組random

2021-07-23 21:29:34 字數 3568 閱讀 3760

一、概述

這個模組實現的偽隨機數生成器。

對於整數,從區間選取。對於序列,隨機元素。

在實線的,有功能來計算均勻分布,正態分佈(高斯) ,對數正態分佈,負指數,γ和β分布。對於生成的角度分布,馮·公尺塞斯的分布是可用的。

幾乎所有的模組功能依賴於基本功能隨機的( ) ,它生成乙個隨機浮點均勻的半開區間[ 0.0 , 1.0 ) 。 python使用mersenne扭曲為核心的發電機。它產生53位精度浮點值,週期為2**19937-1 。 c語言底層實現是快速和執行緒。梅森倍捻機是最廣泛的測試,隨機數生成器的存在之一。然而,作為完全確定性的,所以不適合用於所有目的,並且是完全不適合加密的目的。

該模組提供的功能實際上是必然的random.random類的隱藏的例項的方法。你可以例項化你自己隨機的情況下獲得的發電機不共享狀態。這對於多執行緒程式特別有用,建立隨機的為每個執行緒使用不同的例項,並使用jumpahead ( )方法,使之有可能看到每個執行緒生成的序列不重疊。

在這種情況下,覆蓋隨機的有getstate ( )的setstate ()和jumpahead ( )方法:隨機類也可以,如果你想使用你自己設計的不同的基本生成子類。或者,一種新型的發電機可以提供乙個getrandbits ( )方法 - 這讓randrange ( )產生的選擇了乙個任意大的範圍內。

random.getstate()

返回物件捕獲發生器的當前內部狀態。這個物件可以傳遞給setstate()來恢復狀態

random.setstate(state)

狀態應該已經從以前的呼叫中獲得getstate(),以及setstate()恢**生器的getstate()被呼叫的時候的內部狀態。

random.getrandbits(k)

返回具有k隨機位的乙個python整數。這種方法是與梅森旋轉演算法發生器供給和其他一些發生器也可以提供它作為api的可選部分。如果可用,getrandbits()使randrange()來處理任意大的範圍。

random.randrange([start], stop[, step])

random.randrange的函式:從指定範圍內,按指定基數遞增的集合中 獲取乙個隨機數。如:random.randrange(10, 100, 2),結果相當於從[10, 12, 14, 16, … 96, 98]序列中獲取乙個隨機數。random.randrange(10, 100, 2)在結果上與 random.choice(range(10, 100, 2) 等效。

import random

r = random.randrange(10,100,2)

r 30

random.randint(a,b)

返回乙個隨機整數n使得乙個<= n <= b。也可寫作randrange(a,b + 1)

r = random.randint(1,10) r 6

random.choice()

random.choice從序列中獲取乙個隨機元素。其函式原型為:random.choice(sequence)。引數sequence表示乙個有序型別。這裡要說明 一下:sequence在python不是一種特定的型別,而是泛指一系列的型別。list, tuple, 字串都屬於sequence。有關sequence可以檢視python手冊資料模型這一章。下面是使用choice的一些例子:

random.choice(『abcdefghij』) # single random element

『c』weighted_choices = [(『red』, 3), (『blue』, 2), (『yellow』, 1), (『green』, 4)]

population = [val for val, cnt in weighted_choices for i in range(cnt)]

population

[『red』, 『red』, 『red』, 『blue』, 『blue』, 『yellow』, 『green』, 『green』, 『green』, 『green』]

random.choice(population)

『green』

random.shuffle()

random.shuffle的函式原型為:random.shuffle(x[, random]),用於將乙個列表中的元素打亂。如:

p = [「studying」,」python」,」makes」,」me」,」fun」]

random.shuffle(p)

print p

[『fun』, 『python』, 『studying』, 『makes』, 『me』]

random.sample()

random.sample的函式原型為:random.sample(sequence, k),從指定序列中隨機獲取指定長度的片斷。sample函式不會修改原有序列。

li=[1,2,3,4,5,6,7,8,9,10,11,12,13]

s=random.sample(li,2)

s [2, 8]

li [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]

s=random.sample(li,5)

s [9, 11, 1, 3, 12]

li [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]

random.sample(『abcdefghij』,3)

[『a』, 『d』, 『b』]

import random

import string

string.join(random.sample([『a』,』b』,』c』,』d』,』e』,』f』,』g』,』h』,』i』,』j』], 3)).r

eplace(」 「,」「)

『fih』

random.random()

返回範圍為[0.0,1.0)的下乙個隨機浮點數。

random.random()

0.85415370477785668

random.uniform(a,b)

返回乙個隨機浮點數n使得乙個<= n <= b的要<= b和b <= n <=一對b 《乙個。

random.uniform(1, 10)

5.4221167969800881

洗牌:

items = [1, 2, 3, 4, 5, 6, 7]

random.shuffle(items)

items

[7, 3, 2, 5, 6, 4, 1]

random.sample([1, 2, 3, 4, 5], 3) # three samples without replacement

[4, 1, 5]

python 隨機數模組

import random import string print random.randint 1,199 1,199 隨機取乙個整數 s random.choice qwe wer ert 隨機取乙個元素 print s print string.digits 所有的數字0 9 print st...

隨機數模組

模組 random random 方法返回隨機生成的乙個實數 1.整數 random.randrange ss 返回從0 ss區間內的隨機整數 random.randrange start,end,step 返回從start end區間內,並且步長為step的乙個整數 區間不包括end數值 必須st...

python隨機數模組 Python的隨機數模組

random模組中幾個隨機函式用法。引入random模組 1 import random 1.random.random 此函式用於生成乙個0到1的隨機浮點數 0 n 1.0,即在 0,1 範圍內。1 print random.random 2 print random.random 0.45076...