- Python科学计算(第2版)
- 张若愚
- 769字
- 2025-03-09 06:39:31
2.4.1 随机数
本节介绍的函数如表2-3所示。
表2-3 本节要介绍的函数

numpy.random模块中提供了大量的随机数相关的函数,为了方便后面用随机数测试各种运算函数,让我们首先来看看如何产生随机数:
●rand()产生0到1之间的随机浮点数,它的所有参数用于指定所产生的数组的形状。
●randn()产生标准正态分布的随机数,参数的含义与rand()相同。
●randint()产生指定范围的随机整数,包括起始值,但是不包括终值,在下面的例子中,产生0到9的随机数,它的第三个参数用于指定数组的形状:

random模块提供了许多产生符合特定随机分布的随机数的函数,它们的最后一个参数size都用于指定输出数组的形状,而其他参数都是分布函数的参数。例如:
●normal():正态分布,前两个参数分别为期望值和标准差。
●uniform():均匀分布,前两个参数分别为区间的起始值和终值。
●poisson():泊松分布,第一个参数指定λ系数,它表示单位时间(或单位面积)内随机事件的平均发生率。由于泊松分布是一个离散分布,因此它输出的数组是一个整数数组。

permutation()可以用于产生一个乱序数组,当参数为整数n时,它返回[0,n)这n个整数的随机排列;当参数为一个序列时,它返回一个随机排列之后的序列:
a = np.array([1, 10, 20, 30, 40]) print nr.permutation(10) print nr.permutation(a) [2 4 3 5 6 8 0 1 9 7] [40 1 10 20 30]
permutation()返回一个新数组,而shuffle()则直接将参数数组的顺序打乱:
nr.shuffle(a) a array([ 1, 20, 30, 10, 40])
choice()从指定的样本中随机进行抽取:
●size参数用于指定输出数组的形状。
●replace参数为True时,进行可重复抽取,而为False时进行不重复抽取,默认值为True。所以在下面的例子中,c1中可能有重复数值,而c2中的每个数值都是不同的。
●p参数指定每个元素对应的抽取概率,如果不指定,所有的元素被抽取到的概率相同。在下面的例子中,值越大的元素被抽到的概率越大,因此c3中数值较大的元素比较多。

为了保证每次运行时能重现相同的随机数,可以通过seed()函数指定随机数的种子。在下面的例子中,计算r3和r4之前,都使用42作为种子,因此得到的随机数组是相同的:
