Numpy如何按照预先定义好的概率分布生成随机数

Numpy如何按照预先定义好的概率分布生成随机数

在本文中,我们将介绍在Numpy库中如何生成随机数,并按照预定义的概率分布进行随机数生成。

阅读更多:Numpy 教程

随机数生成器

在Numpy库中,有一个随机数生成器(Random Number Generator),即随机数种子。我们需要使用这个生成器来在程序中生成随机数,从而得到我们要的随机数序列。

在生成器中,有三个变量:随机数种子(Seed)、分布类型(Distribution)、大小(Size)。其中,随机数种子是一个整数,可以控制随机数生成的随机性;分布类型可以是均匀分布、正态分布、泊松分布、几何分布等,大小则指生成的随机数的数量。

均匀分布的随机数生成

均匀分布一般指落在某一范围内的数的概率相等,例如1~6的骰子,每个点数出现的概率都是1/6。

使用Numpy库生成均匀分布的随机数需要使用numpy.random.uniform()函数。该函数中,我们需要定义生成最小值low和最大值high

以下是一个均匀分布的随机数生成的示例代码:

import numpy as np

a = np.random.uniform(low=0.0, high=1.0, size=(5, 5))
print(a)

输出:

[[0.17667561 0.53952272 0.18688396 0.32082124 0.07391092]
 [0.05950122 0.67040973 0.17638681 0.19101702 0.92910219]
 [0.7777735  0.73880867 0.86690502 0.33714648 0.85065738]
 [0.67314931 0.94455623 0.25062615 0.57916082 0.57317439]
 [0.65918253 0.10920183 0.53564277 0.12746726 0.4505022 ]]

以上生成的随机数是在0.0到1.0范围内的均匀分布随机数。需要注意的是,生成的随机数范围不包括上界。

正态分布的随机数生成

正态分布是一种连续的概率分布,它的随机数具有“钟型曲线”的形状,例如人的身高和IQ都符合正态分布。

使用Numpy库生成正态分布的随机数需要使用numpy.random.normal()函数。该函数中,我们需要定义随机数的平均值loc和标准差scale

以下是一个正态分布的随机数生成的示例代码:

import numpy as np

b = np.random.normal(loc=0.0, scale=1.0, size=(5, 5))
print(b)

输出:

[[ 0.73306509  1.15175351 -0.303547   -1.27837833 -0.07256724]
 [-0.82835562 -0.90911943 -0.70898744  0.75738862  1.43185985]
 [ 0.0805      1.18642673  1.50975672 -0.51636389  0.30884356]
 [-1.49169722 -0.8862813  -0.38697121  0.79699658  0.7714312 ]
 [-0.73527864  1.03838275  0.93995322  0.45550506  1.04538662]]

以上生成的随机数是符合平均值为0,标准差为1的标准正态分布随机数。需要注意的是,正态分布随机数的范围一般是从负无穷到正无穷。

按照预定义概率分布生成随机数

有时,我们需要按照预定的概率分布生成随机数。在Numpy中,可以使用numpy.random.choice()函数实现按照预定义概率分布生成随机数的操作。

以下是一个使用numpy.random.choice()函数按照预定的概率分布生成随机数的示例代码:

import numpy as np

weights = [0.1, 0.3, 0.2, 0.4] # 定义概率分布
c = np.random.choice(4, 5, p=weights) # 生成5个按照weights分布的下标
print(c)

输出:

[3 1 0 3 3]

在上面的代码中,我们通过定义weights变量来定义了一个概率分布。然后使用numpy.random.choice()函数来生成5个随机数序列,每个数序列中的数是在[0, 1, 2, 3]范围内的,并按照概率分布weights来生成。最后,我们将生成的数字下标打印出来。

总结

Numpy库中提供了多种随机数生成函数,包括均匀分布、正态分布、泊松分布、几何分布等。同时,我们还可以按照预定义概率分布来生成随机数。在实际应用中,根据具体需求来选择合适的随机数生成函数和概率分布类型,可以高效地生成随机数序列,满足各种需求。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程