离线下载
PDF版 ePub版

qyuhen · 更新于 2018-11-28 11:00:43

数学运算

random

伪随机数生成模块。如果不提供 seed,默认使用系统时间。使用相同 seed,可获得相同的随机数序列,常用于测试。

>>> from random import *

>>> a = Random(); a.seed(1)

>>> [a.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]

>>> 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]

使用示例

生成最大 N 个二进制位的长整数。

>>> getrandbits(5)
29L

>>> bin(getrandbits(5))
'0b11101'

生成 start <= N < stop 范围内的随机整数。

>>> randrange(1, 10)
2

>>> randrange(1, 10, 3)   # 支持步进
4

>>> randrange(1, 10, 3)
1

>>> randrange(1, 10, 3)
7

生成 a <= N <= b 范围内的整数。

>>> randint(1, 10)
5

从序列中随机返回元素。

>>> import string

>>> string.digits
'0123456789'

>>> choice(string.digits)
'6'

>>> choice(string.digits)
'1'

>>> choice(string.digits)
'3'

打乱序列,随机洗牌。

>>> a = range(10)

>>> shuffle(a)

>>> a
[6, 4, 8, 7, 5, 3, 0, 9, 2, 1]

从序列中随机挑选 n 个不同元素组合成列表。

>>> string.letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

>>> sample(string.letters, 10)
['I', 'F', 'W', 'O', 'r', 'o', 'A', 'K', 'i', 'h']

>>> "".join(sample(string.letters, 10))  # 生成指定长度的随机字符串很容易
'kMmSgPVWIi'

>>> "".join(sample(string.letters, 10))
'feCTyRZrHv'

生成 0.0 <= N < 1 的随机浮点数。

>>> random()
0.39559451765020448

>>> random()
0.62378508101496177

生成 min <= N <= max 范围内的随机浮点数。

>>> uniform(1, 10)
7.6889886379206587

>>> uniform(10, 1)
5.1617099528426609

该模块还支持三角、β分布、指数分布、伽马分布、高斯分布等非常专业的随机算法。

上一篇: 数据类型 下一篇: 文件与目录