python中的random模块是内建(built-in),用来生成随机数的,常用的函数如下:
使用交互模式举例子
Python 2.7.12 (default, Dec 4 2017, 14:50:18)
[GCC 5.4.0 20160609] on linux2
Type “help”, “copyright”, “credits” or “license” for more information.
import random
#查看random模块下的函数
dir(random)
[‘BPF’, ‘LOG4’, ‘NV_MAGICCONST’, ‘RECIP_BPF’, ‘Random’, ‘SG_MAGICCONST’, ‘SystemRandom’, ‘TWOPI’, ‘WichmannHill’, ‘_BuiltinMethodType’, ‘_MethodType’, ‘all’, ‘builtins’, ‘doc’, ‘file’, ‘name’, ‘package’, ‘_acos’, ‘_ceil’, ‘_cos’, ‘_e’, ‘_exp’, ‘_hashlib’, ‘_hexlify’, ‘_inst’, ‘_log’, ‘_pi’, ‘_random’, ‘_sin’, ‘_sqrt’, ‘_test’, ‘_test_generator’, ‘_urandom’, ‘_warn’, ‘betavariate’, ‘choice’, ‘division’, ‘expovariate’, ‘gammavariate’, ‘gauss’, ‘getrandbits’, ‘getstate’, ‘jumpahead’, ‘lognormvariate’, ‘normalvariate’, ‘paretovariate’, ‘randint’, ‘random’, ‘randrange’, ‘sample’, ‘seed’, ‘setstate’, ‘shuffle’, ‘triangular’, ‘uniform’, ‘vonmisesvariate’, ‘weibullvariate’]
生成1至10(不包含10)的一个随机数,整型int
random.randint(1,10)
10
生成一个0到1之间的随机浮点数,包括0但不包括1,也就是[0.0, 1.0)
random.random()
0.45351869971251213
random.random()
0.22462490577606353
random.uniform(a, b)生成a至b之间的随机浮点数
与randint不同的是,a、b可以不是整数,也不用考虑大小
random.uniform(1, 5)
4.253616977571431
random.uniform(3.5, 5.9)
4.112165661774612
random.uniform(5.9, 3.5)
4.710955790979342
random.choice(seq) 从序列中随机选取一个元素
seq需要时一个序列,例如list、元组、字符串
random.choice([1, 2, 3, 4])
1
random.choice([‘g’, ‘k’, ‘o’])
‘g’
random.choice([‘hello’, ‘hi’, ‘say’])
‘say’
random.randrange(start, stop, step)生成一个从star到stop(不包括stop)
间隔为step的随机整数,start、stop、step都要为整数,且start>> random.randrange(0, 20, 2)
0
random.randrange(0, 20, 2)
2
random.randrange(0, 20, 2)
14
random.randrange(0, 20, 2)
16
random.randrange(0, 20, 2)
10
random.randrange(0, 20, 2)
2
random.sample(p, k)从p序列获取k个元素,生成一个新的序列
sample不改变原来的序列
a = [1, 2, 3, 4, 5, 6]
random.sample(a, 3)
[3, 4, 5]
random.sample(a, 4)
[1, 6, 4, 2]
a
[1, 2, 3, 4, 5, 6]
random.shuffle(x)把序列x中的元素顺序打乱,shuffle直接改变原有的序列
a = [1, 2, 3, 4, 5]
random.shuffle(a)
a
[4, 1, 5, 3, 2]
该函数没有返回值,不能直接print
print(random.shuffle(a))
None
random.seed(a=None, version=2)初始化随机数生成器
初始化伪随机数生成器。如果未提供a或者a=None
#则使用系统时间为种子。如果a是一个整数,则作为种子。
random.seed(1)
random.random()
0.13436424411240122
random.random()
0.8474337369372327
random.random()
0.763774618976614
感受一下
random.seed(1)
random.random()
0.13436424411240122
random.random()
0.8474337369372327
random.random()
0.763774618976614