日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

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

一、概述

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

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

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

幾乎所有的模塊功能依賴于基本功能隨機的( ) ,它生成一個隨機浮點均勻的半開區間[ 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) 等效。

importrandom

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

random.randint(A,B)

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

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

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)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)的下一個隨機浮點數。

print(random.random) #

print(random.random()) #0.9765901824412893

random.uniform(A,B)

返回一個隨機浮點數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]

練習1 : 寫函數生成一個6位數的驗證碼

def get_code(n=6):

code= ""

for i inrange(n):

num= random.randint(0,9)

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

結果

練習2 : 寫函數生成一個包含數字,小寫字母和大寫字母的驗證碼

提示: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())

結果

練習3 :?寫一個發紅包函數,接受兩個參數:金額 個數,每個人取到錢的幾率是一樣的

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

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): 傳入參數,循環取出所有值print(money)

發紅包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))

發紅包2

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。