python基礎教程_學習筆記16:標準庫:一些最愛——random

標準庫:一些最愛

random

random模塊包括返回隨機數的函數,可以用於模擬或者用於任何產生隨機輸出的程序。

事實上,所產生的數字都是僞隨機數,它們以一個可預測的系統作爲基礎,除非是爲了強加密的目標,否則這些隨機數還是足夠隨機的。如果真的需要隨機性,可以使用os模塊的urandom函數。

重要函數

函數

描述

random()

返回0<=n<1之間的隨機實數n,其中0<n<=1

getrandbits(n)

以長整型形式返回n個隨機位(二進制數)

uniform(a,b)

返回隨機實數n,其中a<=n<b

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

返回range(start,stop,step)中的隨機數

choice(seq)

從序列seq中返回隨意元素

shuffle(seq[,random])

原地指定序列seq

sample(seq,n)

從序列seq中選擇n個隨機且獨立的元素

 

random.getrandbits以長整型形式返回給定的位數(二進制數)。如果處理的是真正的隨機事務(比如加密),這個函數尤爲有用。

>>> import random

>>> random.random()

0.21811083216655824

 

>>> random.getrandbits(2)

3L

>>> random.getrandbits(2)

3L

>>> random.getrandbits(2)

0L

 

>>> random.uniform(1,4)

3.511648764533735

>>> random.uniform(1,9)

6.00895159575027

 

>>> random.randrange(5,100,21)

5

>>> random.randrange(5,100,21)

26

>>> random.randrange(5,100,21)

68

>>> random.randrange(5,100,21)

47

 

>>> random.randrange(10)

4

>>> random.randrange(10)

3

 

>>> random.choice((5,6,9))

6

>>> random.choice([5,6,9])

6

>>> random.choice('signjing')

'j'

 

因爲random.shuffle函數原地移位序列,因此要求序列一定是可變的。

>>> a=['a','b','c']

>>> random.shuffle(a)

>>> a

['b', 'a', 'c']

>>> random.shuffle(a)

>>> a

['c', 'b', 'a']

 

>>> random.sample(a,2)

['a', 'c']

>>> random.sample(a,2)

['c', 'b']

練習 獲取隨機數

腳本內容

$ cat random-example-1.py

#File : random-example-1.py

 

import random

 

for i in range(5):

        print random.random(),

 

        print random.uniform(10,20),

 

        print random.randint(100,1000),

 

        print random.randrange(100,1000,2)

 

執行結果

$ python random-example-1.py

0.370761541392 17.2201292256 839 342

0.808063846391 12.0582042123 224 910

0.855181475123 13.6575143789 406 510

0.713555346237 14.0263174291 306 698

0.637399405203 13.3270555599 799 540

 

練習 隨機序列中的元素

腳本內容

$ cat random-example-2.py

#File : random-example-2.py

 

import random

 

for i in range(5):

        print random.choice([1,2,3,5,9])

執行結果

$ python random-example-2.py

2

2

2

5

9

練習 洗牌

腳本內容

$ cat random-example-4.py

#File : random-example-4.py

 

import random

 

try:

        shuffle=random.shuffle

except AttributeError:

        def shuffle(x):

                for i in xrange(len(x)-1,0,-1):

                        j=int(random.random()*(i+1))

                        x[i],x[j]=x[j],x[i]

 

cards=range(52)

 

shuffle(cards)

myhand=cards[:5]

print myhand

 

執行結果

$ python random-example-4.py

[20, 44, 17, 14, 0]

$ python random-example-4.py

[8, 17, 27, 13, 42]

練習 高斯隨機數

腳本內容

$ cat random-example-3.py

#File : random-example-3.py

 

import random

 

histogram=[0]*20

 

for i in range(25):

        i=int(random.gauss(5,1)*2)

        histogram[i]=histogram[i]+1

 

m=max(histogram)

for v in histogram:

        print "*" * (v * 50 / m)

 

執行結果

$ python random-example-3.py

 

 

 

 

 

 

******

******

*************************

*******************************

**************************************************

************

******************

 

******

 

 

 

 

 

發佈了69 篇原創文章 · 獲贊 73 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章