偽隨機(jī)數(shù)生成模塊。如果不提供 seed,默認(rèn)使用系統(tǒng)時(shí)間。使用相同 seed,可獲得相同的隨機(jī)數(shù)序列,常用于測試。
>>> from random import *
>>> a = Random(); a.seed(1)
>>> [a.randint(1, 100) for i in range(20)]
[14, 85, 77, 26, 50, 45, 66, 79, 10, 3, 84, 44, 77, 1, 45, 73, 23, 95, 91, 4]
>>> b = Random(); b.seed(1)
>>> [b.randint(1, 100) for i in range(20)]
[14, 85, 77, 26, 50, 45, 66, 79, 10, 3, 84, 44, 77, 1, 45, 73, 23, 95, 91, 4]
使用示例
生成最大 N 個(gè)二進(jìn)制位的長整數(shù)。
>>> getrandbits(5)
29L
>>> bin(getrandbits(5))
'0b11101'
生成 start <= N < stop 范圍內(nèi)的隨機(jī)整數(shù)。
>>> randrange(1, 10)
2
>>> randrange(1, 10, 3) # 支持步進(jìn)
4
>>> randrange(1, 10, 3)
1
>>> randrange(1, 10, 3)
7
生成 a <= N <= b 范圍內(nèi)的整數(shù)。
>>> randint(1, 10)
5
從序列中隨機(jī)返回元素。
>>> import string
>>> string.digits
'0123456789'
>>> choice(string.digits)
'6'
>>> choice(string.digits)
'1'
>>> choice(string.digits)
'3'
打亂序列,隨機(jī)洗牌。
>>> a = range(10)
>>> shuffle(a)
>>> a
[6, 4, 8, 7, 5, 3, 0, 9, 2, 1]
從序列中隨機(jī)挑選 n 個(gè)不同元素組合成列表。
>>> string.letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> sample(string.letters, 10)
['I', 'F', 'W', 'O', 'r', 'o', 'A', 'K', 'i', 'h']
>>> "".join(sample(string.letters, 10)) # 生成指定長度的隨機(jī)字符串很容易
'kMmSgPVWIi'
>>> "".join(sample(string.letters, 10))
'feCTyRZrHv'
生成 0.0 <= N < 1 的隨機(jī)浮點(diǎn)數(shù)。
>>> random()
0.39559451765020448
>>> random()
0.62378508101496177
生成 min <= N <= max 范圍內(nèi)的隨機(jī)浮點(diǎn)數(shù)。
>>> uniform(1, 10)
7.6889886379206587
>>> uniform(10, 1)
5.1617099528426609
該模塊還支持三角、β分布、指數(shù)分布、伽馬分布、高斯分布等非常專業(yè)的隨機(jī)算法。