random
伪随机数生成模块。如果不提供seed,默认使用系统时间。
使用相同seed,可获得相同的随机数序列,常用于测试。
>>> from random import *>>> >>> a = Random();a.seed(1)>>> >>> a>>> [a.randint(1,100) for i in range(20)] #生成20个[1,100]以内的随机数[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]#使用相同的seed,可获得相同的随机数序列,常用于测试
使用示例:
生成start<=N<stop范围内的随机整数
>>> randrange(1,10)1>>> >>> randrange(1,10,3)#支持步进7>>> randrange(1,10)3>>> randrange(1,10)1>>> randrange(1,10)8>>> randrange(1,10)3
生成a<=N<=b范围内的整数
>>> randint(1,10)9
从序列中随机返回元素
>>> import string>>> >>> string.digits'0123456789'>>> >>> choice(string.digits)'3'>>> choice(string.digits)'5'
打乱序列,随机洗牌:
>>> a = range(10)>>> a[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> shuffle(a)>>> a[5, 0, 4, 2, 7, 9, 6, 3, 8, 1]
从序列中随机挑选n个不同元素的组合成列表:
>>> string.letters'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'>>> >>> sample(string.letters,10)['f', 'w', 'Y', 'k', 'j', 'U', 'x', 'g', 'W', 'z']>>> "".join(sample(string.letters,10)) #生成指定长度的随机字符 串'rcYvVBFiuX'>>> >>> "".join(sample(string.letters,10)) #生成指定长度的随机字符 串'VMTaDEwOBg'
生成0.0<=N<1的随机浮点数:
>>> from random import *>>> random() #生成0.0<=N<1的随机浮点数0.64468721840449683>>> random()0.64314720491508159>>> >>> >>> uniform(1,10)2.0345270899004566>>> uniform(1,10) #生成min<=N<=max范围内的随机浮点数7.4607728774267086>>> >>> uniform(10,1) #生成min<=N<=max范围内的随机浮点数 8.5975353880482359
该模块还支持三角、指数分布、高斯分布等随机算法。