在这篇文章中,我们将学习在python中生成均匀的随机数。所有事件发生的机会都是一样的,因此,概率密度是均匀的。均匀分布的密度函数是。
p(x) = 1/(b-a), a <x <b .
对于区间(a, b)之外的x,事件的概率为0。要从均匀分布中产生随机数,我们可以使用NumPy的numpy.random.uniform方法。让我们看一个简单的例子。
$ python3
Python 3.8.5 (default, Mar 8 2021, 13:02:45)
[GCC 9.3.0] on linux2
输入**"help"、"copyright"、"credits "或 "license "**获取更多信息。
>>> import numpy as np
>>> np.random.uniform()
0.7496272782328547
上面的代码生成了一个在0和1之间采样的均匀随机数。我们可以用参数low和high来指定区间的下边界和区间的上边界。参数low指定了区间的下边界,默认情况下,它的值为0。参数high指定了区间的上边界,默认情况下,它的值为1。
>>> np.random.uniform(low=0, high=10)
5.7355211819715715
假设我们想创建一个数值的数组。我们可以使用参数size来指定数组的大小。它接受一个整数或一个整数的元组作为参数,并产生指定大小的随机样本。
>>> np.random.uniform(0, 10, size=4)
array([6.78922668, 5.07844106, 6.4897771 , 1.51750403])
>>> np.random.uniform(0, 10, size=(2, 2))
array([[3.61202254, 8.3065906 ],
[0.59213768, 2.16857342]])
在上面的例子中,**传递(2,2)**作为大小,创建了一个大小为(2,2)的随机数数组。
由分布产生的随机数可以被可视化,以查看其分布。在这一部分,我们将使用seaborn库来实现随机数的可视化。
>>> import seaborn as sns
>>> import matplotlib.pyplot as plt
>>> a = np.random.uniform(0, 10, 10000)
>>> sns.histplot(a)
<AxesSubplot:ylabel='Count'>
>>> plt.show()
上面生成的直方图图通过计算属于每个离散仓的观察值的数量来表示一个分布。我们观察到,对于由均匀分布生成的随机数来说,每个离散仓中的样本数是均匀的。我们还注意到,对于 区间(0,10)以外的元素没有观察到计数。因此,小于下限区间或高于下限区间的元素的概率是0,而在区间内,随机样本的概率是1/(10-0)=0.1。