1. 程式人生 > >09.3 python基礎--random庫

09.3 python基礎--random庫

09.3.1 簡介

使用隨機數的python標準庫,用於產生隨機數

09.3.2 函式

基本隨機數函式

+ seed() :給隨機數物件一個種子值,用於產生隨機序列,完全相同的種子產生的隨機數列是相同的,所以如果想產生不同的隨機數就需要用當前時間作為種子
random.seed(0)
print "Random number with seed 0 : ", random.random()
random.seed(0)
print "Random number with seed 0 : ", random.random()
random.seed(0)
print "Random number with seed 0 : ", random.random()

>Random number with seed 0 : 0.844421851525
>Random number with seed 1 : 0.844421851525
>Random number with seed 2 : 0.844421851525
random.seed(0)
print "Random number with seed 0 : ", random.random()
random.seed(1)
print "Random number with seed 1 : ", random.random()
random.seed(2)
print "Random number with seed 2 : ", random.random()

>Random number with seed 0 : 0.844421851525
>Random number with seed 1 : 0.134364244112
>Random number with seed 2 : 0.956034271889
+ random():生成一個[0.0,1.0)之間的隨機小數

擴充套件隨機數函式

+ randint(a,b):生成一個a~b之間的整數
import random
n = random.randint(10,100)
print(n)
>42
+ randrange(m, n[, k]):生成一個[m,n]之間以k為步長的隨機整數
import random
n = random.randrange(10,100,10)
print(n)
>60
+ getrandbits(k):生成一個k位元長的隨機整數
import random
n = random.getrandbits(10)
print(n)
>713
+ uniform(a,b):生成一個[a,b]之間的隨機小數
import random
n = random.uniform(10,100)
print(n)
>14.641504182041913
+ choice(seq):從序列seq中隨機選擇一個元素
import random
n = random.choice([1,2,3,4,5,6,7,8,9,0,])
print(n)
>6
+ shuffle(seq):打亂序列並重新排列
import random
l=[1,2,3,4,5,6,7,8,9,0]
random.shuffle(l)
print(l)
>[3, 4, 1, 8, 0, 6, 7, 2, 5, 9]

09.3.3 圓周率的計算

根據公式計算

import random
pi = 0
n = 1000
for i in range(n):
    pi +=1/pow(16,i)*\
         (4/(8*i+1)-2/(8*i+4)-\
          1/(8*i+5)-1/(8*i+6))
print('圓周率的值是:{:.10f}'.format(pi))

>圓周率的值是:3.1415926536

隨機概率計算方法

from random import random
from time import perf_counter
s =1000*1000
n = 0
start = perf_counter()
for i in range(1,s+1):
    x,y=random(),random()
    l = pow(x**2+y**2,0.5)
    if l <= 1:
        n += 1
pi = 4*(n/s)
print('圓周率的值是:{}'.format(pi))
print('執行時間是:{:.5f}s'.format(perf_counter()-start))

>圓周率的值是:3.138736
>執行時間是:2.67644s