随机数
本课属于 Coddy Machine Learning 学习旅程的“数据与图表”单元。第 18 课,共 60 课。
模拟、打乱的数据和未经训练的模型都从随机数开始。这 1,000 个虚构身高只用了一行代码:
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 之间的小数。
相同的种子在任何计算机上都会生成相同的数字,因此任何人都可以重复你的实验。每次抽取都会让生成器向前推进。
挑战
简单商店模拟了一周,重新运行时必须重复这周的结果。
- 根据随机种子创建
rng_a,抽取 7 个客户人数,范围为 20 到 60(含端点),然后抽取 7 个正态分布的消费金额:均值为 15,标准差为 4。 - 使用相同的随机种子,通过
rng_b再次抽取人数;再使用随机种子加 1,通过rng_c抽取人数。 - 按如下格式输出:消费金额保留 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())
# 在下方编写你的代码
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
数据与图表中的所有课
自己练习: Python 在线编译器