跳至内容

使用 Numpy 的随机数生成器教程

Numpy 的 random 模块是一组基于伪随机数生成的函数。随机意味着无法通过逻辑进行预测。
已更新 2026年10月6日  · 4分钟 阅读

使用 AI 探索

ChatGPTClaudePerplexity

Numpy 的 random 模块是一组基于伪随机数生成的函数。随机意味着无法通过逻辑进行预测。

np.random.seed() 函数

在此示例中,您将模拟抛硬币。您将使用函数 np.random(),它会在 0 到 1 之间抽取一个数,并且该区间内的所有数出现的概率相同。

如果抽到的数小于 0.5(发生的概率为 50%),则记为正面,否则为反面。此类结果为要么为 True(正面)要么为 False(反面),称为伯努利试验。

伪随机数的工作方式是从一个称为种子(seed)的整数开始,然后依次生成一串数字。相同的种子会产生相同的随机数序列,因此称为“伪”随机数生成。如果您希望代码可复现,最好使用 np.random.seed() 函数为随机数生成器设定种子。

要进行抛硬币,您需要导入 NumPy,为随机数生成器设定种子,然后抽取四个随机数。您可以用 size 关键字指定需要的随机数个数。

import numpy as np
np.random.seed(42)
random_numbers = np.random.random(size=4)
random_numbers
array([0.3745012, 0.95071431, 0.73199394, 0.59865848])

您得到的第一个数小于 0.5,所以是正面,而其余三个为反面。您可以使用小于运算显式展示这一点,它会给出一个包含布尔值的数组,正面为 True,反面为 False。

heads = random_numbers < 0.5
heads
array([True, False, False, False], dtype=bool)

最后,您可以通过对布尔数组 heads 求和来计算正面的个数,因为在数值上下文中,Python 将 True 视为 1,False 视为 0。

np.sum(heads)
1

模拟四次随机抛硬币

在下面的示例中,我们想知道如果一遍又一遍地重复四次抛硬币,得到四次都是正面的概率是多少。我们可以用 for 循环来完成。

我们先将计数初始化为零。然后重复进行 10,000 次“四次抛硬币”的试验。如果某次试验得到四次都是正面,我们就将计数加一。

那么得到四次全为正面的概率是多少?就是“得到全是正面的次数”除以“试验总次数”。结果约为 0.06。

n_all_heads = 0

# Initialize number of 4-heads trials
for _ in range(10000):
         heads = np.random.random(size=4) < 0.5
         n_heads = np.sum(heads)
         if n_heads == 4:
             n_all_heads += 1

n_all_heads / 10000
0.0621

生成随机数的交互式示例

在此示例中,我们将生成大量 0 到 1 之间的随机数,并绘制结果的直方图。如果这些数是真正随机的,直方图中的所有柱形应该(近似)等高。

要完成本示例,您需要:

  • 使用种子 42 通过 np.random.seed 为随机数生成器设定种子。
  • 初始化一个包含 100,000 个条目的空数组 random_numbers,用于存储这些随机数。请确保使用 np.empty(100000) 来完成此操作。
  • 编写一个 for 循环,使用 np.random.random() 抽取 100,000 个随机数,并将其存入 random_numbers 数组。为此,请循环 range(100000)。
  • 绘制 random_numbers 的直方图。在这里不必标注坐标轴,因为我们只是检查随机数生成器。
# Seed the random number generator
np.random.seed(42)

# Initialize random numbers: random_numbers
random_numbers = np.empty(100000)

# Generate random numbers by looping over range(100000)
for i in range(100000):
    random_numbers[i] = np.random.random()

# Plot a histogram
_ = plt.hist(random_numbers)

# Show the plot
plt.show()

运行上述代码后,将产生如下结果:

histogram

亲自试一试。

想进一步了解随机数生成器和黑客统计学,请观看我们课程 Statistical Thinking in Python (Part 1) 中的这段视频。

本文内容摘自 DataCamp 由 Justin Bois 授课的 Statistical Thinking in Python (Part 1) 课程。

主题
Python

进一步学习 Python

课程

NumPy 入门

4 小时
62.8K
通过纽约市树木普查学习如何创建、排序、筛选和更新数组,精通 NumPy 技能。
查看详情Right Arrow
开始课程
查看更多Right Arrow