Python之random

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

原文地址:https://www.cnblogs.com/gsblog/p/3370978.html