代码中经常会用到随机的部分,此时需要使用程序自带的伪随机数发生器,本文记录常用方法。
python 伪随机数产生方法
- python 原生 random 库
- numpy 中 random 包
random 方法
Python中的random模块用于生成随机数。下面介绍一下random模块中最常用的几个函数。
random.random()
用于生成一个0到1的随机符点数: 0 <= n < 1.0。
random.uniform(a, b)
用于生成一个在[a, b]均匀分布上的随机数。
random.randint(a, b)
用于生成一个指定范围内的整数。
random.choice(sequence)
从序列中获取一个随机元素。
random.shuffle(sequence)
用于将一个列表中的元素打乱。
random.sample(sequence, k)
从指定序列中随机(无放回)获取指定长度的片断。
numpy.random 方法
np.random.rand(d0, d1, …, dn)
产生 [d0, d1, …, dn] 维度的随机数矩阵,数据取自[0,1]均匀分布
代码语言:javascript复制np.random.rand(3,2)
np.random.randn(d0, d1, …, dn)
产生 [d0, d1, …, dn] 维度的随机数矩阵,数据取自标准正态分布
np.random.randint(low, high, size)
产生半开半闭区间 [low, high)中的随机整数,返回 size 个
np.random.choice(a, size, replace, p)
a: sequence 或者 数字(表示序列)
size: 取样个数
replace: True 有放回 False 无放回
p: 概率列表
代码语言:javascript复制Examples
Generate a uniform random sample from np.arange(5) of size 3:
>>> np.random.choice(5, 3)
array([0, 3, 4])
>>> #This is equivalent to np.random.randint(0,5,3)
Generate a non-uniform random sample from np.arange(5) of size 3:
>>> np.random.choice(5, 3, p=[0.1, 0, 0.3, 0.6, 0])
array([3, 3, 0])
Generate a uniform random sample from np.arange(5) of size 3 without replacement:
>>> np.random.choice(5, 3, replace=False)
array([3,1,0])
>>> #This is equivalent to np.random.permutation(np.arange(5))[:3]
Generate a non-uniform random sample from np.arange(5) of size 3 without replacement:
>>> np.random.choice(5, 3, replace=False, p=[0.1, 0, 0.3, 0.6, 0])
array([2, 3, 0])
Any of the above can be repeated with an arbitrary array-like instead of just integers. For instance:
>>> aa_milne_arr = [‘pooh‘, ‘rabbit‘, ‘piglet‘, ‘Christopher‘]
>>> np.random.choice(aa_milne_arr, 5, p=[0.5, 0.1, 0.1, 0.3])
array([‘pooh‘, ‘pooh‘, ‘pooh‘, ‘Christopher‘, ‘piglet‘],
dtype=‘|S11‘)
np.random.bytes(length)
返回 length 个随机字节。
代码语言:javascript复制>>> np.random.bytes(10)
‘ ehx85x022SZxbfxa4‘ #random
np.random.permutation(X)
返回一个随机排列
代码语言:javascript复制>>> np.random.permutation(10)
array([1, 7, 4, 3, 0, 9, 2, 5, 8, 6])
>>> np.random.permutation([1, 4, 9, 12, 15])
array([15, 1, 9, 4, 12])
>>> arr = np.arange(9).reshape((3, 3))
>>> np.random.permutation(arr)
array([[6, 7, 8],
[0, 1, 2],
[3, 4, 5]])
np.random.shuffle(X)
现场修改序列,改变自身内容。
代码语言:javascript复制>>> arr = np.arange(10)
>>> np.random.shuffle(arr)
>>> arr
[1 7 5 2 9 4 3 6 0 8]
This function only shuffles the array along the first index of a multi-dimensional array:
>>> arr = np.arange(9).reshape((3, 3))
>>> np.random.shuffle(arr)
>>> arr
array([[3, 4, 5],
[6, 7, 8],
[0, 1, 2]])
参考资料
- https://www.cnblogs.com/yyxayz/p/4080525.html
- https://blog.csdn.net/weixin_42029738/article/details/81977492