NumPy
提供了强大的生成随机数的功能。真正的随机数很难获得,实际中使用的都是伪随机数。大部分情况下,伪随机数就能满足需求。当然,某些特殊情况除外,如进行高精度的模拟实验。
对于NumPy
,与随机数相关的函数都在random
模块中,其中包括了可以生成服从多种概率分布随机数的函数。
random
函数random
函数是最常见的生成随机数的方法,用于在区间[0,1)
中生成均匀分布的随机数或随机数数组。
函数格式为random(size=None)
,size
参数可选,即结果数组的形状元组,默认值为None
,生成一个[0,1)
之间的随机浮点数。
# 结果为一维数组
print('生成的随机数组为:',np.random.random(10))
生成的随机数组为:array([0.78283652, 0.9154314 , 0.41306707, 0.77055199, 0.16990905,
0.07928419, 0.17580154, 0.5834303 , 0.52031781, 0.98319803])
# 结果为二维数组
print('生成的随机数组为:',np.random.random((2,5)))
结果为:
生成的随机数组为:array([[0.97113777, 0.50128748, 0.76695156, 0.85181191, 0.25288016],
[0.60372028, 0.67677372, 0.91640817, 0.61216549, 0.23824247]])
rand
函数rand
函数在区间[0,1)
中生成服从均匀分布的随机数或随机数数组。
函数格式为rand(d0, d1, ..., dn)
,参数可选,即结果数组的形状,每个维度占据一个参数位置。如果没有参数则生成一个[0,1)
之间的随机浮点数。
print('生成的随机数为:\n',np.random.rand())
生成的随机数为:
0.7217603302000459
print('生成的随机数组为:\n',np.random.rand(1))
生成的随机数组为:
[0.19385678]
print('生成的随机数组为:\n',np.random.rand(10,5))
生成的随机数组为:
[[0.49840862 0.03578359 0.00181009 0.67397351 0.78615651]
[0.5804709 0.97197456 0.63421724 0.64432133 0.03697043]
[0.97348562 0.01799491 0.99825668 0.10233273 0.55043191]
[0.70151956 0.51284018 0.2016238 0.60990257 0.56710229]
[0.64986193 0.82797604 0.91317567 0.34350347 0.9934578 ]
[0.14026724 0.19500193 0.39243871 0.49482824 0.81348489]
[0.01888658 0.28372039 0.598484 0.46529771 0.30162018]
[0.51269246 0.62850629 0.16219104 0.15306988 0.4664314 ]
[0.36235548 0.93563423 0.3229593 0.79106824 0.52974968]
[0.97405183 0.92076197 0.63987763 0.62506821 0.17320877]]
randn
函数randn
函数可以生成服从正态分布的随机数或随机数数组。标准正态分布俗称高斯分布,正态分布是大自然中最常见的分布,标准正态分布就是期望为0,方差为1的正态分布。
函数格式为rand(d0, d1, ..., dn)
。
如果没有参数,则返回一个值,如果有参数,则返回(d0, d1, …, dn)个值,这些值都是从标准正态分布中随机取样得到的。
参数:
返回值
# 结果为随机数
print('生成的随机数为:\n',np.random.randn())
生成的随机数为:
0.099700533892262
# 结果为一维数组
print('生成的随机数组为:\n',np.random.randn(1))
生成的随机数组为:
[-0.4034816]
# 结果为二维数组
print('生成的随机数组为:\n',np.random.randn(10,5))
生成的随机数组为:
[[-0.92244038 -0.14297778 -1.62183926 0.69450445 -0.46215443]
[-1.43031877 -1.15707293 0.95024971 -0.97172887 -0.00521778]
[-0.42761885 0.89326249 -1.42080774 -0.16936234 0.28452475]
[-0.29800584 0.56017163 0.57995082 0.10571659 -0.66880545]
[ 0.05009425 1.47425088 0.13893255 0.32171053 -1.30117759]
[ 0.04855885 0.24891627 0.1961776 -0.50640093 0.77361007]
[-1.07036266 -0.76379055 0.1406273 0.30699761 0.58440356]
[ 1.05698817 1.15176542 0.84752212 0.98985422 -1.50556324]
[-1.62727776 0.18529418 -0.56364778 1.08166426 1.75008011]
[ 0.81312321 1.02836285 1.35420898 0.32063411 0.38178463]]
randint
函数randint函数可以生成给定上下限范围的随机数。
函数格式为randint(low, high=None, size=None, dtype=int)
。
其中,参数low
为最小值,high
为最大值,size
为数组维度,dtype
为数据类型,默认的数据类型是np.in
t。倘若high
没有填写,默认生成随机数的范围就是[0,low)
。size
是可选项,如果不设置,则仅生成一个随机整数,如果想生成多个随机整数,则需要用一个元组来指定随机整数数组的维度信息。
返回的随机整数范围为[low,high)
,包含low
,不包含high
。
print('生成的随机数组为:',np.random.randint(2,10,size = [2,5]))
生成的随机数组为: [[4 5 4 9 8]
[2 7 2 3 2]]