python模塊之random
1、random
python中的random模塊用于生成隨機數。下面介紹常用的一些函數。
dir(random):查看random模塊下面有哪些函數。
>>> import random
>>> dir(random)
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', '_Builti
nMethodType', '_MethodType', '_Sequence', '_Set', '__all__', '__builtins__', '__cached__', '__doc__', '__f
ile__', '__loader__', '__name__', '__package__', '__spec__', '_acos', '_bisect', '_ceil', '_cos', '_e', '_
exp', '_inst', '_itertools', '_log', '_pi', '_random', '_sha512', '_sin', '_sqrt', '_test', '_test_generat
or', '_urandom', '_warn', 'betavariate', 'choice', 'choices', 'expovariate', 'gammavariate', 'gauss', 'get
randbits', 'getstate', 'lognormvariate', 'normalvariate', 'paretovariate', 'randint', 'random', 'randrange
', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']
常用函數有:
1.1 產生一個隨機數(元素)
random.random():用于產生一個0到1 的隨機浮點數,0<=n<1。
>>> random.random()
0.052603181609407135
>>> round(random.random(), 2)
0.13 # 四舍五入取兩位小數
random.uniform(a, b):用于生成一個指定范圍內的隨機符點數,兩個參數其中一個是上限,一個是下限。如果a>b,則生成的隨機數n:a<=n<=b。如果a<b,則 b<=n<=a。
>>> random.uniform(10, 20)
18.269306458836333
>>> random.uniform(20, 10)
10.804263239022113
random.randint(a, b):用于生成一個指定范圍內的整數。其中參數a是下限,參數b是上限,a、b不可顛倒、生成的隨機數:a<=n<=b。
>>> random.randint(10, 20)
13
>>> random.randint(20, 10)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\software\python\lib\random.py", line 220, in randint
return self.randrange(a, b+1)
File "C:\software\python\lib\random.py", line 198, in randrange
raise ValueError("empty range for randrange() (%d,%d, %d)" % (istart, istop, width))
ValueError: empty range for randrange() (20,11, -9)
random.randrange([start], stop[, step]):從指定范圍內,按指定基數遞增的集合中獲取一個隨機數。
>>> random.randrange(10, 20, 2)
14 # 即從[10, 12, 14, 16, …18]序列中獲取一個隨機數。在結果上與 random.choice(range(10, 100, 2)等效。
random.choice(sequence):從指定序列隨機獲取元素。參數sequence表示一個有序類型,見數據類型。
>>> random.choice(('daocoder', 'mudai', 'godao'))
'daocoder'
>>> random.choice(['daocoder', 'mudai', 'godao'])
'godao'
1.2 產生一個隨機序列
random.shuffle(x[, random]):用于將一個列表中的元素打亂。修改原有序列。
>>> a=['daocoder', 'mudai', 'godao']
>>> random.shuffle(a)
>>> a
['daocoder', 'godao', 'mudai']
random.sample(sequence, k):從指定序列中隨機獲取指定長度的片斷。不會修改原有序列。
>>> a=['daocoder', 'mudai', 'godao', 'zhangsan', 'lisi', 'wangwu']
>>> random.sample(a, 5)
['godao', 'zhangsan', 'daocoder', 'lisi', 'mudai']
>>> random.sample(a, 4)
>>>> a
['daocoder', 'mudai', 'godao', 'zhangsan', 'lisi', 'wangwu']