一、random庫介紹
random庫是使用隨機數的Python標准庫
- 偽隨機數:采用梅森旋轉算法生成的(偽)隨機序列中元素
- random庫主要用於生成隨機數
- 使用random庫:
import random
1.1 random庫概述
random庫包括兩類函數,常用共8個
- 基本隨機數函數:
seed(), random()
- 擴展隨機數函數:
randint(), getrandbits(), uniform(),randrange(), choice(), shuffle()
二、基本隨機數函數
2.1隨機數種子
[]
函數 | 描述 |
---|---|
seed(a=None) | 初始化給定的隨機數種子,默認為當前系統時間 |
random() | 生成一個[0.0, 1.0)之間的隨機小數 |
import random
random.seed(10) # 產生種子10對應的序列
random.random()
結果:0.5714025946899135
random.random()
結果:0.4288890546751146
random.seed(10)
random.random()
結果:0.5714025946899135
三、擴展隨機數函數
函數 | 描述 |
---|---|
randint(a,b) | 生成一個[a, b]之間的整數 |
randrange(m, n[, k]) | 生成一個[m, n)之間以k為步長的隨機整數 |
getrandbits(k) | getrandbits(k) |
uniform(a, b) | 生成一個[a, b]之間的隨機小數 |
choice(seq) | 從序列seq中隨機選擇一個元素 |
shuffle(seq) | 將序列seq中元素隨機排列,返回打亂后的序列 |
eg: randint()
import random
random.randint(10, 100)
結果:60
eg:randrange()
import random
random.randrange(10, 100, 10)
結果:80
eg:getrandbits()
import random
random.getrandbits(16)
結果:37885
eg:uniform()
import random
random.uniform(10, 100)
結果:11.334920142209832
eg:choice()
import random
random.choice([1, 2, 3, 4, 5, 6, 7])
結果:5
eg:shuffle()
import random
s = [1, 2, 3, 4, 5, 6, 7, 8, 9]
random.shuffle(s)
print(s)
結果:[3, 9, 7, 4, 1, 2, 6, 5, 8]
3.1 隨機函數的使用
需要掌握的能力
- 能夠利用隨機數種子產生"確定"偽隨機數
- 能夠產生隨機整數
- 能夠對序列類型進行隨機操作
四、圓周率的計算
- 蒙特卡洛方法
from random import random
from time import perf_counter
DARTS = 1000 * 1000
hits = 0.0
start = perf_counter()
a
for i in range(1, DARTS + 1):
x, y = random(), random()
dist = pow(x**2 + y**2, 0.5)
if dist <= 1.0:
hits = hits + 1
pi = 4 * (hits / DARTS)
print("圓周率值是: {}".format(pi))
print("運行時間是: {:.5f}s".format(perf_counter() - start))