9. random

9.1. random

Python 自带的 random 库。

import random
random.random()

生成 [0.0, 1.0) 区间的随机浮点数。

random.uniform(a, b)

生成指定范围 [a, b] 区间的随机浮点数。

random.randint(a, b)

生成指定范围 [a, b] 区间的随机整数。

random.randrange(start, stop, step)

指定范围内,按 step 递增的集合中的随机数。

random.choice(lst)

给定的集合中选择一个元素。

random.shuffle(lst)

对一个序列或者元组随机打乱。

9.2. numpy.random

import numpy as np
numpy.random.random(size=None)

生成 [0.0, 1.0) 区间的随机浮点数,size 可以是整数、元组、列表(缺省为1)。

numpy.random.rand(d0, d1, ..., dn)

生成 [0.0, 1.0) 区间的随机浮点数,维度为 \(d_0 \times d_1 \times ... \times d_n\) (缺省为1)。

numpy.random.randn(d0, d1, ..., dn)

生成标准正态分布。

numpy.random.randint(low, high=None, size=None, dtype='l')

返回随机的整数,位于半开区间 [low, high) 。如果 high=None ,区间为 [0, low) 。

numpy.random.choice(arr, size=None, replace=True, p=None)

从一个给定的一维数组,按概率 p 抽样一定数量的元素, replace=True 表示允许重复元素。

numpy.random.shuffle(arr)

随机打乱 arr。

numpy.random.permutation(arr)

返回一个随机排列。

numpy.random.seed(n)

改变随机数生成器的种子。设置相同的 seed,每次生成的随机数相同;如果不设置 seed,则每次会生成不同的随机数。

 1## 注:生成的数组都是 numpy array 类型
 2
 3>>> 2.5 * np.random.randn(2, 4) + 3
 4[[-0.52410303  1.68461615 -0.04895917  2.81907944]
 5 [ 6.89754303  2.95949232  1.85296809  1.56361545]]
 6
 7>>> np.random.randint(5, size=(2, 4))
 8[[0 4 2 3]
 9 [0 0 4 4]]
10
11## 从 np.arange(4) 选取 3 个元素
12>>> np.random.choice(4, 3)
13[3 1 2]
14>>> np.random.choice([1,3,9,0], 3)
15[9 3 0]
16>>> np.random.choice(4, 3, p=[0.1, 0.2, 0, 0.7])
17[1 3 3]
18
19>>> arr = np.arange(10)
20>>> np.random.shuffle(arr)
21>>> print arr
22[6 9 0 8 1 7 4 5 3 2]
23
24>>> np.random.permutation(10)
25[5 8 9 7 3 1 0 2 6 4]
26>>> np.random.permutation([1, 4, 9, 12, 15])
27[ 9  1  4 12 15]
28>>> arr = np.arange(9).reshape((3, 3))
29>>> np.random.permutation(arr)
30[[3 4 5]
31 [6 7 8]
32 [0 1 2]]
33
34>>> np.random.seed(1)
35>>> np.random.random()
360.417022004702574
37>>> np.random.seed(1)
38>>> np.random.random()
390.417022004702574
40>>> np.random.random()
410.7203244934421581

9.3. 参考资料

  1. random — Generate pseudo-random numbers

  1. Random sampling (numpy.random)

  1. random与numpy.random

  1. numpy的random模块详细解析