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. 参考资料
random — Generate pseudo-random numbers
Random sampling (numpy.random)
random与numpy.random
numpy的random模块详细解析