Python 的 random 库

Python 的 random 库实现了各种分布的伪随机数生成。

整数

  • random.randrange(start, stop=None, step=1):从 range(start, stop, step) 返回一个随机选择的元素。stopstep 可以缺省,stop 缺省时返回 range(start) 中的一个随机元素;
  • random.randint(a, b):返回一个 [a, b] 中的随机整数。

序列

  • random.choice(seq):从非空序列 seq 返回一个随机元素;
  • random.shuffle(x):将序列 x 随机打乱位置;
  • random.sample(population, k):从 population 中选择 k 个不重复的随机元素组成的序列,不保序。

实值

  • random.random():返回 [0, 1) 区间内的一个浮点数;
  • random.uniform(a, b):返回 a + (b-a) * random.random()

其他

random.seed(a=None):设置随机种子。
random 库还可以支持生成很多分布的实值随机数。

以相同的顺序打乱两个序列

使用 zip 模块将两个序列打包,shuffle 后拆开即可。

1
2
3
4
5
6
7
8
9
10
import random


a = ["Bob", "Jack", "Tom", "Jarry"]
b = [1, 2, 3, 4]

map_position = list(zip(a, b))
random.shuffle(map_position)
a, b = zip(*map_position)
a, b = list(a), list(b)