python3 random模塊的用法

python v3.7.0

random是python產(chǎn)生隨機(jī)數(shù)的內(nèi)置庫筹淫,隨機(jī)種子默認(rèn)為系統(tǒng)時(shí)鐘。下面分析模塊中的方法:

random.random()

生成一個(gè)隨機(jī)的浮點(diǎn)數(shù)腔寡,范圍是在[0,1)之間经瓷。

import random

a=random.random()
print(a)
0.4156918860673895
print('{0:.3f}'.format(a))
0.416
print(round(a,3))
0.416

random.uniform(a,b)

random.uniform()方法可以設(shè)定生成的隨機(jī)浮點(diǎn)數(shù)的范圍,兩個(gè)參數(shù)其中一個(gè)是上限液茎,一個(gè)是下限歌殃。如果a > b乔妈,則生成的隨機(jī)數(shù)n: a <= n <= b。如果 a <b氓皱, 則 b <= n <= a路召。

print(random.uniform(1, 1))
1.0

print(random.uniform(1, 2))
1.222097652142283

print(random.uniform(10, 2))
3.2784286513984773

random.randint(start, end)

隨機(jī)生一個(gè)整數(shù)int類型,可以指定這個(gè)整數(shù)的范圍(閉區(qū)間 [start, end])波材,和random.uniform()方法不同股淡,當(dāng)start>end的時(shí)候會(huì)拋出異常。

print(random.randint(1, 1))
1

print(random.randint(1, 2))
2

print(random.randint(2, 1))
ValueError: empty range for randrange() (2,2, 0)

random.choice(seq)

可以從列表廷区,元組或字符串中選取 一個(gè) 隨機(jī)的元素返回唯灵。

print(random.choice([1, 2, 'a']))
2

print(random.choice((3, 4, 5)))
4

print(random.choice("abc"))
c

# 生成指定長度的隨機(jī)字符串
import string
def generate_random_string(k, chars=None):
    if chars is None:
        chars = string.ascii_letters
    else:
        for name, seeds in [('[LOWER]', string.ascii_lowercase), ('[UPPER]', string.ascii_uppercase), ('[NUMBER]', string.digits),
                            ('[LETTERS]', string.ascii_letters)]:
            chars = chars.replace(name, seeds)

    return ''.join([random.choice(chars) for _ in range(k)])
    # return ''.join([seeds[random.randint(0, len(chars) - 1)] for _ in range(k)])    # randint是閉區(qū)間,所以需要-1

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

Python v3.6新增
作用:從集群中隨機(jī)選擇k次數(shù)據(jù)隙轻,支持設(shè)置權(quán)重埠帕,并返回一個(gè)列表。
參數(shù)說明:

  • population: 集群
  • weights:相對權(quán)重
  • cum_weights:累加權(quán)重
  • k: 選取次數(shù)
L = [1, 2, 3, 4, 5]
t1 = random.choices(L, k=3)
t2 = random.choices(L, weights=[0, 0, 0, 1, 0], k=3)
print(t1, t2)

>>>
[5, 3, 1] [4, 4, 4]

參數(shù)weights設(shè)置相對權(quán)重玖绿,它的值是一個(gè)列表敛瓷,設(shè)置之后,每一個(gè)成員被抽取到的概率就被確定了斑匪。比如weights=[1,2,3,4,5],那么第一個(gè)成員的概率就是P=1/(1+2+3+4+5)=1/15呐籽。

cum_weights設(shè)置累加權(quán)重,代碼中會(huì)自動(dòng)把相對權(quán)重轉(zhuǎn)換為累加權(quán)重,即如果直接給出累加權(quán)重狡蝶,那么就不需要
給出相對權(quán)重庶橱。比如weights=[1,2,3,4],那么cum_weights=[1,3,6,10]。

random.shuffle(list)

隨機(jī)打亂序列元素的位置贪惹,只能針對可變序列苏章,對于元組等不可變序列會(huì)報(bào)錯(cuò)。要注意馍乙,random.shuffle()會(huì)直接作用于seq本身,而不會(huì)返回任何值,如:

print(random.shuffle([1, 2, 3]))
None

a = [1, 2, 3]
b = a[:]
random.shuffle(b)
print(a, b)
[1, 2, 3] [1, 3, 2]

random.sample(seq,k)

可以從指定的序列(可變or不可變)中垫释,隨機(jī)選取指定長度的片斷丝格,并返回一個(gè)列表,k的取值范圍是 [0,len(seq)]棵譬。

a = "abcdefg"
print(random.sample(a, len(a)))
['c', 'a', 'g', 'b', 'f', 'd', 'e']


b = [1, 2, 3, "ab"]
print(random.sample(a, len(b) - 2))
['d', 'a']

print(random.sample(a, 0))
[ ]

random.send(n=None)

seed( ) 用于指定隨機(jī)數(shù)生成時(shí)所用算法開始的整數(shù)值显蝌。n代表隨機(jī)種子;當(dāng)n=None時(shí)订咸,隨機(jī)種子為系統(tǒng)時(shí)間曼尊,此時(shí)每次生成的隨機(jī)數(shù)因時(shí)間差異而不同,當(dāng)n為其他的數(shù)據(jù)脏嚷,如int骆撇,str等,則以提供的數(shù)據(jù)作為隨機(jī)種子父叙,此時(shí)生成的隨機(jī)數(shù)列固定神郊。

random.seed('test')
print(random.random())
0.6555960613392863

random.seed('test')
print(random.random())
0.6555960613392863
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市趾唱,隨后出現(xiàn)的幾起案子涌乳,更是在濱河造成了極大的恐慌,老刑警劉巖甜癞,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件夕晓,死亡現(xiàn)場離奇詭異,居然都是意外死亡悠咱,警方通過查閱死者的電腦和手機(jī)蒸辆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來析既,“玉大人吁朦,你說我怎么就攤上這事《杉郑” “怎么了逗宜?”我有些...
    開封第一講書人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我纺讲,道長擂仍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任熬甚,我火速辦了婚禮逢渔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘乡括。我一直安慰自己肃廓,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開白布诲泌。 她就那樣靜靜地躺著盲赊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪敷扫。 梳的紋絲不亂的頭發(fā)上哀蘑,一...
    開封第一講書人閱讀 52,156評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音葵第,去河邊找鬼绘迁。 笑死,一個(gè)胖子當(dāng)著我的面吹牛卒密,可吹牛的內(nèi)容都是我干的缀台。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼哮奇,長吁一口氣:“原來是場噩夢啊……” “哼将硝!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起屏镊,我...
    開封第一講書人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬榮一對情侶失蹤依疼,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后而芥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體律罢,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年棍丐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了误辑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡歌逢,死狀恐怖巾钉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情秘案,我是刑警寧澤砰苍,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布潦匈,位于F島的核電站,受9級(jí)特大地震影響赚导,放射性物質(zhì)發(fā)生泄漏茬缩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一吼旧、第九天 我趴在偏房一處隱蔽的房頂上張望凰锡。 院中可真熱鬧,春花似錦圈暗、人聲如沸掂为。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽勇哗。三九已至,卻和暖如春昵济,著一層夾襖步出監(jiān)牢的瞬間智绸,已是汗流浹背野揪。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來泰國打工访忿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人斯稳。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓海铆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親硫痰。 傳聞我的和親對象是個(gè)殘疾皇子难捌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 如果你對在Python生成隨機(jī)數(shù)與random模塊中最常用的幾個(gè)函數(shù)的關(guān)系與不懂之處社搅,下面的文章就是對Python...
    Hobort閱讀 1,556評(píng)論 0 1
  • random 模塊主要包含生成偽隨機(jī)數(shù)的各種功能變量和函數(shù)。 在 Python 的交互式解釋器中先導(dǎo)入 rando...
    帥帥滴小哥哥閱讀 577評(píng)論 0 1
  • random.random() random.random()函數(shù)是這個(gè)模塊中最常用的方法了珍语,它會(huì)生成一個(gè)隨機(jī)的浮...
    小梨的十三閱讀 1,252評(píng)論 0 1
  • 源碼:Lib/random.py 該模塊實(shí)現(xiàn)了各種分布的偽隨機(jī)數(shù)生成器板乙。 對于整數(shù),從范圍中有統(tǒng)一的選擇拳氢。 對于序...
    山海皆可平z閱讀 470評(píng)論 0 1
  • 推薦指數(shù): 6.0 書籍主旨關(guān)鍵詞:特權(quán)募逞、焦點(diǎn)、注意力馋评、語言聯(lián)想放接、情景聯(lián)想 觀點(diǎn): 1.統(tǒng)計(jì)學(xué)現(xiàn)在叫數(shù)據(jù)分析,社會(huì)...
    Jenaral閱讀 5,722評(píng)論 0 5