random库 随机数函数
随机数可以用于数学,游戏,安全等领域中,还经常被嵌入到算法中,用以提高算法效率,并提高程序的安全性。
random库是 使用随机数的python标准库
伪随机数:采用梅森旋转算法生成的(伪)随机序列中元素
random库主要用于生成随机数
使用random库:
import 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’, ‘_os’, ‘_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’, ‘weibullvariate’]
random库包括两类函数,常用的8个
基本随机函数:
- seed([x]) 改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed。默认为当前系统时间
random.seed(10) #产生种子10对应的序列
- random()随机生成下一个实数,它在[0,1)范围内。
random.random()
0.4761436510894117
- 同一个随机种子产生的随机序列是一样的。
random.seed(10)
random.random()
0.5714025946899135
random.random()
0.4288890546751146
random.random()
0.5780913011344704
random.seed(10)
random.random()
0.5714025946899135
random.random()
0.4288890546751146
random.random()
0.5780913011344704
扩展随机函数
- choice(seq)从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。
random.choice(range(20))
3
a=[1,5,8,9,6,3,4,5,6]
a
[1, 5, 8, 9, 6, 3, 4, 5, 6]
random.choice(a)
6
- randrange ([start,] stop [,step])从指定范围内,按指定基数递增的集合中获取一个随机数,基数默认值为 1
random.randrange(10,100,10)
20
random.randrange(10,100,2)
18
- shuffle(lst)将序列的所有元素随机排序
a=[1,5,8,9,6,3,4,5,6]
a
[1, 5, 8, 9, 6, 3, 4, 5, 6]
random.shuffle(a)
a
[9, 6, 4, 8, 3, 5, 6, 5, 1]
- uniform(x, y)生成一个[x,y]范围内的随机小数
random.uniform(1,20)
7.944030163628453
random.uniform(1,20)
18.03890529185077
- randint(x,y)生成一个[x,y]之间的整数
random.randint(10,60)
23
- getrandbits(k)生成一个K比特长的随机整数
random.getrandbits(8)
72
random.getrandbits(16)
59552