random
伪随机数生成模块。如果不提供seed,默认使用系统时间。
使用相同seed,可获得相同的随机数序列,常用于测试。
>>> from random import * >>> >>> a = Random();a.seed(1) >>> >>> a <random.Random object at 0x6beb50> >>> [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
该模块还支持三角、指数分布、高斯分布等随机算法。
http://docs.python.org/2.7/library/random.html#module-random