日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

python随机数模块_python 随机数模块 -- random

發(fā)布時間:2023/12/10 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python随机数模块_python 随机数模块 -- random 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、概述

這個模塊實現(xiàn)的偽隨機數(shù)生成器。

對于整數(shù),從區(qū)間選取。對于序列,隨機元素。

在實線的,有功能來計算均勻分布,正態(tài)分布(高斯) ,對數(shù)正態(tài)分布,負(fù)指數(shù),γ和β分布。對于生成的角度分布,馮·米塞斯的分布是可用的。

幾乎所有的模塊功能依賴于基本功能隨機的( ) ,它生成一個隨機浮點均勻的半開區(qū)間[ 0.0 , 1.0 ) 。 Python使用Mersenne扭曲為核心的發(fā)電機。它產(chǎn)生53位精度浮點值,周期為2**19937-1 。 C語言底層實現(xiàn)是快速和線程。梅森倍捻機是最廣泛的測試,隨機數(shù)生成器的存在之一。然而,作為完全確定性的,所以不適合用于所有目的,并且是完全不適合加密的目的。

該模塊提供的功能實際上是必然的random.Random類的隱藏的實例的方法。你可以實例化你自己隨機的情況下獲得的發(fā)電機不共享狀態(tài)。這對于多線程程序特別有用,創(chuàng)建隨機的為每個線程使用不同的實例,并使用jumpahead ( )方法,使之有可能看到每個線程生成的序列不重疊。

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

random.getstate()

返回對象捕獲發(fā)生器的當(dāng)前內(nèi)部狀態(tài)。這個對象可以傳遞給setstate()來恢復(fù)狀態(tài)

random.setstate(state)

狀態(tài)應(yīng)該已經(jīng)從以前的調(diào)用中獲得getstate(),以及setstate()恢復(fù)發(fā)生器的getstate()被調(diào)用的時候的內(nèi)部狀態(tài)。

random.getrandbits(k)

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

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

random.randrange的函數(shù):從指定范圍內(nèi),按指定基數(shù)遞增的集合中 獲取一個隨機數(shù)。如:random.randrange(10, 100, 2),結(jié)果相當(dāng)于從[10, 12, 14, 16, … 96, 98]序列中獲取一個隨機數(shù)。random.randrange(10, 100, 2)在結(jié)果上與 random.choice(range(10, 100, 2) 等效。

importrandom

r= random.randrange(10,100,2)print (r) #14

random.randint(A,B)

返回一個隨機整數(shù)N使得一個<= N <= B。也可寫作randrange(A,B + 1)

r = random.randint(1,10)print(r) #8

random.choice()

random.choice從序列中獲取一個隨機元素。其函數(shù)原型為:random.choice(sequence)。參數(shù)sequence表示一個有序類型。這里要說明 一下:sequence在python不是一種特定的類型,而是泛指一系列的類型。list, tuple, 字符串都屬于sequence。有關(guān)sequence可以查看python手冊數(shù)據(jù)模型這一章。下面是使用choice的一些例子:

>>>random.choice(‘a(chǎn)bcdefghij’) #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的函數(shù)原型為:random.shuffle(x[, random]),用于將一個列表中的元素打亂。如:

>>>p =[“studying”,”python”,”makes”,”me”,”fun”]>>>random.shuffle(p) #亂序

>>>print(p)#結(jié)果: [‘fun’, ‘python’, ‘studying’, ‘makes’, ‘me’]

random.sample()

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

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

s= random.sample(li,2)print(s) #[7, 11]

s= random.sample(li,5)print(s) #[2, 3, 9, 13, 12]

s= random.sample("asddsfsf",3)print(s) #['f', 'd', 's']

random.random()

返回范圍為[0.0,1.0)的下一個隨機浮點數(shù)。

print(random.random) #

print(random.random()) #0.9765901824412893

random.uniform(A,B)

返回一個隨機浮點數(shù)N使得一個<= N <= b的要<= B和B <= N <=一對B

print(random.uniform(1,10)) #2.4537297196491257

print(random.uniform) #>

洗牌:

>>>items = [1, 2, 3, 4, 5, 6, 7]>>>random.shuffle(items)>>>print(items) #[7, 3, 2, 5, 6, 4, 1]

練習(xí)1 : 寫函數(shù)生成一個6位數(shù)的驗證碼

def get_code(n=6):

code= ""

for i inrange(n):

num= random.randint(0,9)

code+=str(num)returncodeprint(get_code())

結(jié)果

練習(xí)2 : 寫函數(shù)生成一個包含數(shù)字,小寫字母和大寫字母的驗證碼

提示:ascii碼 A-Z為 65-90,a-z為97-122

def get_code(n=6):

code= ""

for i inrange(n):

num= str(random.randint(0,9))

alpha_upper= chr(random.randint(65, 90))

alpha_lower= chr(random.randint(97,122))

c=random.choice([num,alpha_lower,alpha_upper])

code+=creturncodeprint(get_code())

結(jié)果

練習(xí)3 :?寫一個發(fā)紅包函數(shù),接受兩個參數(shù):金額 個數(shù),每個人取到錢的幾率是一樣的

importrandomdef lucky_money(money,num): #傳入金額和個數(shù)

ret = random.sample(range(1,money*100),num-1)

ret.sort()

ret.insert(0,0)

ret.append(money*100)for i in range(len(ret)-1):

money= ret[i+1] -ret[i]yield money/100

for money in lucky_money(200,15): 傳入?yún)?shù),循環(huán)取出所有值print(money)

發(fā)紅包1

importrandomdefbouns(money,amount):whileamount:if amount == 1:yield float("%.2f" %money)else:

money1=random.uniform(0,money)

money2= random.uniform(1/amount,3/amount)*money1

money-= float("%.2f" %money2)yield float("%.2f" %money2)

amount-= 1g= bouns(200,10)print(list(g))

發(fā)紅包2

總結(jié)

以上是生活随笔為你收集整理的python随机数模块_python 随机数模块 -- random的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。