1. 程式人生 > >Python3.6 模組學習之random模組

Python3.6 模組學習之random模組

random是內建(built-in)函式,作用是產生隨機數

匯入模組:

import random
接著就可以呼叫random模組下的函數了使用 dir(random)可以檢視random模組下有哪些函式,結果如下:
>>> dir(random)
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', '_BuiltinMethodType', '_MethodType', '_Sequence
', '_Set', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_acos', '_bisect
', '_ceil', '_cos', '_e', '_exp', '_inst', '_itertools', '_log', '_pi', '_random', '_sha512', '_sin', '_sqrt', '_test', '_test_generator', '_urandom'
, '_warn', 'betavariate', 'choice', 'choices', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'lognormvariate', 'normalvariate', 
'paretovariate', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvaria
te']

最常用的函式有如下:

random.randint

random.randint(1,10)
語句的含義是產生1至10(包含1與10)的一個隨機數(整數int型)。(引數為整數不可為浮點數否則會報錯)
random.randint(20, 10) #該語句是錯誤的。下限必須小於或等於上限。

random.random

random.random()

生成一個0到1之間的隨機浮點數,包括0但不包括1,也就是[0.0, 1.0)

random.uniform

random.uniform(a, b)
生成a、b之間的隨機浮點數。不過與randint不同的是,a、b可以不是整數,也不用考慮大小。

random.uniform(3.65,10.56)#可以這樣
random.uniform(10.56, 3.65)#也可以這樣

random.choice

random.choice(seq)
從序列中隨機選取一個元素。seq需要是一個序列,比如list、元組、字串。
random.choice([1, 2, 3, 5, 8, 13]) #list

random.choice('hello') #字串

random.choice(['hello', 'world']) #字串組成的list

random.choice((1, 2, 3)) #元組

都是可行的用法。

random.randrange

random.randrange(start, stop, step)

生成一個從start到stop(不包括stop),間隔為step的一個隨機整數。start、stop、step都要為整數,且start<stop

random.sample

random.sample(p, k)
從p序列中,隨機獲取k個元素,生成一個新序列。sample不改變原來序列。

這個模組很 666,還支援三角、β分佈、指數分佈、伽馬分佈、高斯分佈等等非常專業的隨機演算法。

random.shuffle

random.shuffle(x)
把序列x中的元素順序打亂。shuffle直接改變原有的序列。如:
import random
a=[1,2,3,4,5,6]
random.shuffle(a)
print(a)

結果如下:
[5, 1, 3, 6, 4, 2]

新手在使用此函式時可能會出現一些錯誤,如下:
import random
a=[1,2,3,4,5,6]
print(random.shuffle(a))
使用此方法會出現None結果,原因是random.shuffle() 是用來打亂列表元素的,沒有返回值,所以不能用print(random.shuffle(a))來輸出列印打亂

後的序列