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

歡迎訪問 生活随笔!

生活随笔

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

python

python中getrandbits函数用法_python random - 刘江的python教程

發布時間:2023/12/4 python 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中getrandbits函数用法_python random - 刘江的python教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

random

閱讀:?8288

評論:1

random模塊用于生成偽隨機數。

真正意義上的隨機數(或者隨機事件)是按照實驗過程中表現的分布概率隨機產生的,其結果是不可預測的。而計算機中的隨機數是所謂的隨機函數按照一定算法模擬產生的,其結果是確定的,是可預測的。所以用計算機隨機函數所產生的“隨機數”并不隨機,是偽隨機數,絕對不可以用來生成密碼。

1.計算機的偽隨機數是由隨機種子根據一定的計算方法計算出來的數值。所以,只要計算方法一定,隨機種子一定,那么產生的隨機數就是固定的。

2.如果用戶不設置隨機種子,那么隨機種子默認來自系統時鐘。

1. 基本方法

random.seed(a=None, version=2)

初始化隨機數生成器。如果未提供a或者a=None,則使用系統時間為種子。如果a是一個整數,則作為新的種子。

random.getstate()

返回當前生成器的內部狀態

random.setstate(state)

傳入一個先前利用getstate方法獲得的狀態對象,使得生成器恢復到這個狀態。

random.getrandbits(k)

返回一個不大于K位的Python整數(十進制),比如k=10,則結果是0~2^10之間的整數。

2. 針對整數的方法

注意:在使用后面的方法時,一定要小心區間的開閉!

random.randrange(stop)

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

等同于后面的choice(range(start,stop,step)),從range的范圍內隨機選擇一個整數。這個方法并不實際創建range對象。

random.randint(a, b)

返回一個a <= N <= b的隨機整數N。等同于randrange(a, b+1)。

3. 針對序列類型的方法

random.choice(seq)

從非空序列seq中隨機選取一個元素。如果seq為空則彈出IndexError異常。

random.choices(population, weights=None, *, cum_weights=None, k=1)

3.6版本新增。從population集群中隨機抽取K個元素。weights是相對權重列表,cum_weights是累計權重,兩個參數不能同時存在。

random.shuffle(x[, random])

隨機打亂序列x內元素的排列順序,俗稱“洗牌”。只能用于可變的序列,對于不可變序列,請使用下面的sample()方法。

random.sample(population, k)

從population樣本或集合中隨機抽取K個不重復的元素形成新的序列。常用于不重復的隨機抽樣。返回的是一個新的序列,不會破壞原有序列。比如從一個整數區間隨機抽取一定數量的整數random.sample(range(10000000), k=60),這非常有效和節省空間。

如果k大于population的長度,則彈出ValueError異常。

4. 真值分布

random模塊最高端的功能其實在這里。

random.random()

返回一個介于左閉右開[0.0, 1.0)區間的浮點數。

random.uniform(a, b)

返回一個介于a和b之間的浮點數。如果a>b,則是b到a之間的浮點數。這里的a和b都有可能出現在結果中。

random.triangular(low, high, mode)

返回一個low <= N <=high的三角形分布的隨機數。參數mode指明眾數出現位置。

random.betavariate(alpha, beta)

β分布。返回的結果在0~1之間。

random.expovariate(lambd)

指數分布

random.gammavariate(alpha, beta)

伽馬分布

random.gauss(mu, sigma)

高斯分布

random.lognormvariate(mu, sigma)

對數正態分布

random.normalvariate(mu, sigma)

正態分布

random.vonmisesvariate(mu, kappa)

卡帕分布

random.paretovariate(alpha)

帕累托分布

random.weibullvariate(alpha, beta)

這個...請數學高手解答一下,囧。

5. 可選擇的生成器

class random.SystemRandom([seed])

使用os.urandom()方法生成隨機數的類,由操作系統提供源碼,不一定所有系統都支持。

6. 重要的例子

>>> from random import *

>>> random() # 隨機浮點數: 0.0 <= x < 1.0

0.37444887175646646

>>> uniform(2.5, 10.0) # 隨機浮點數: 2.5 <= x < 10.0

3.1800146073117523

>>> randrange(10) # 0-9的整數:

7

>>> randrange(0, 101, 2) # 0-100的偶數

26

>>> choice(['win', 'lose', 'draw']) # 從序列隨機選擇一個元素

'draw'

>>> deck = 'ace two three four'.split()

>>> shuffle(deck) # 對序列進行洗牌,改變原序列

>>> deck

['four', 'two', 'ace', 'three']

>>> sample([10, 20, 30, 40, 50], k=4) # 不改變原序列的抽取指定數目樣本,并生成新序列

[40, 10, 50, 30]

>>> # 6次旋轉紅黑綠輪盤(帶權重可重復的取樣),不破壞原序列

>>> choices(['red', 'black', 'green'], [18, 18, 2], k=6)

['red', 'green', 'black', 'black', 'red', 'black']

>>> # Deal 20 cards without replacement from a deck of 52 playing cards

>>> # and determine the proportion of cards with a ten-value

>>> # (a ten, jack, queen, or king).

>>> deck = collections.Counter(tens=16, low_cards=36)

>>> seen = sample(list(deck.elements()), k=20)

>>> seen.count('tens') / 20

0.15

>>> # Estimate the probability of getting 5 or more heads from 7 spins

>>> # of a biased coin that settles on heads 60% of the time.

>>> trial = lambda: choices('HT', cum_weights=(0.60, 1.00), k=7).count('H') >= 5

>>> sum(trial() for i in range(10000)) / 10000

0.4169

>>> # Probability of the median of 5 samples being in middle two quartiles

>>> trial = lambda : 2500 <= sorted(choices(range(10000), k=5))[2] < 7500

>>> sum(trial() for i in range(10000)) / 10000

0.7958

下面是生成一個包含大寫字母A-Z和數字0-9的隨機4位驗證碼的程序

import random

checkcode = ''

for i in range(4):

current = random.randrange(0,4)

if current != i:

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

else:

temp = random.randint(0,9)

checkcode += str(temp)

print(checkcode)

下面是生成指定長度字母數字隨機序列的代碼:

import random, string

def gen_random_string(length):

# 數字的個數隨機產生

num_of_numeric = random.randint(1,length-1)

# 剩下的都是字母

num_of_letter = length - num_of_numeric

# 隨機生成數字

numerics = [random.choice(string.digits) for i in range(num_of_numeric)]

# 隨機生成字母

letters = [random.choice(string.ascii_letters) for i in range(num_of_letter)]

# 結合兩者

all_chars = numerics + letters

# 洗牌

random.shuffle(all_chars)

# 生成最終字符串

result = ''.join([i for i in all_chars])

return result

if __name__ == '__main__':

print(gen_random_string(64))

評論總數: 1

random.weibullvariate(alpha, beta)是韋布爾分布

By

用戶5888865032???On

2019年4月15日 10:12

回復

總結

以上是生活随笔為你收集整理的python中getrandbits函数用法_python random - 刘江的python教程的全部內容,希望文章能夠幫你解決所遇到的問題。

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