随机数
在本课中,我们将学习如何生成随机数,以及如何从一组数字中选择随机数。
生成随机数
随机数生成器允许你从指定的分布中抽取一个随机数。numpy 的 random 子包中包含了多个随机数生成器。我们将把这个包导入为 rnd,以减少输入量。
1import numpy.random as rnd
随机数生成器的一个例子是 randint() 函数。randint(low, high, size) 函数返回一个包含 size 个整数的数组,每个整数都是从 low 到 high(不包括 high)之间随机抽取的。
使用help('numpy.random')命令来了解 Python 中更多的随机数生成器。
假设我们抛硬币 10 次,将正面赋值为 0,反面赋值为 1。我们将 high 设置为 1 + 1,这意味着它比期望的最大值大 1。因此,这个命令会生成一个由 0 和 1 组成的数组。
让我们看看如何在代码中实现这一点。
1import numpy as np 2import numpy.random as rnd 3 4print(rnd.randint(0, 1 + 1, 10))
我们将 randint() 的 high 参数设为 2(比最大值大 1),low 参数设为 0。再次运行上面的代码以查看效果。
并非真正随机?
内部,随机数生成器从一个称为 种子 的数值开始。种子是在调用随机数生成器时自动生成的(据称是随机的)数字。
由于种子值决定了你获得的随机数序列,有些人可能会认为生成的序列最多只是伪随机的。你可能不希望将其用于任何重要的加密问题,但就我们的用途而言,它们已经足够随机了。
在下面的代码中,我们将 seed 设为 :
1import numpy as np 2import numpy.random as rnd 3 4rnd.seed(10) 5print(rnd.randint(0, 1 + 1, 10))
如果我们再次调用randint()函数,会得到相同的零和一的序列。再次运行上面的代码以查看效果。
能够生成完全相同的序列在代码开发过程中非常有用。例如,通过设置随机数生成器的种子,你可以将自己的输出与其他人解决同一问题的输出进行比较。
提取随机数
numpy.random 模块允许你使用 choice() 函数从给定数组中抽取随机数。choice() 的输入参数包括样本数组、随机选择值的大小以及是否替换。
1rnd.choice(array, size, replace)
choice() 函数有一个 replace 参数,用于指定是否带替换地选取值。replace 的值是一个布尔值。
1import numpy as np 2import numpy.random as rnd 3 4arr = np.arange(1, 11) 5pick = rnd.choice(arr, 3, replace = True) 6print(pick)
反复运行代码,观察输出的变化。
在下一课中,我们将学习随机变量的一个常见问题:抛硬币。