Menu
CoddyTech

随机数

本课属于 Coddy Machine Learning 学习旅程的“数据与图表”单元。第 18 课,共 60 课。

模拟、打乱的数据和未经训练的模型都从随机数开始。这 1,000 个虚构身高只用了一行代码:

1,000 个随机身高的直方图,形状像钟形,在平均值 170 cm 附近最高,向 140 和 200 逐渐变低

NumPy 会从生成器中生成它们,生成器由种子启动:

rng = np.random.default_rng(42)
heights = rng.normal(170, 10, size=1000)
print(np.round(heights[:4], 1))
print(rng.integers(1, 7, size=5))
print(np.round(rng.random(3), 2))

这会打印:

[173.  159.6 177.5 179.4]
[2 4 3 3 5]
[0.44 0.13 0.09]

normal(mean, std, size) 会围绕其均值聚集。integers 不包含其停止值,和 range 一样。random 会生成 0 到 1 之间的小数。

相同的种子在任何计算机上都会生成相同的数字,因此任何人都可以重复你的实验。每次抽取都会让生成器向前推进。

challenge icon

挑战

简单

商店模拟了一周,重新运行时必须重复这周的结果。

  1. 根据随机种子创建 rng_a,抽取 7 个客户人数,范围为 20 到 60(含端点),然后抽取 7 个正态分布的消费金额:均值为 15,标准差为 4。
  2. 使用相同的随机种子,通过 rng_b 再次抽取人数;再使用随机种子加 1,通过 rng_c 抽取人数。
  3. 按如下格式输出:消费金额保留 1 位小数,并输出 b 和 c 分别有多少天与 a 相同。

随机种子为 12 时:

Customers: [45 30 59 58 22 27 28]
Spend: [21.5 10.2 12.5  9.7 14.6 19.  14.9]
Same seed, days that match: 7
Seed + 1, days that match: 1

亲手试试

import numpy as np

seed = int(input())

# 在下方编写你的代码
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

数据与图表中的所有课

自己练习: Python 在线编译器