说明
本练习在课堂内完成。请在本机使用 VS Code、Cursor 或 Devin Desktop 编写并运行,再将源代码与终端输出填入各题下方的文本框。
练习一:设置种子后生成数值
编写程序,按固定顺序生成一个 1 到 100 的整数、一个 0 到 1 的浮点数、一个指定区间的浮点数。再次设置同一种子后,下一个整数与第一次相同。
要求
- 在程序中按下面的顺序写入。先导入
random,再设置种子,然后打印三个随机数,最后再次设置种子并打印整数。
import random
random.seed(42)
print(random.randint(1, 100))
print(random.random())
print(random.uniform(1.5, 8.7))
random.seed(42)
print(random.randint(1, 100))
- 四行输出依次为
82、0.11133106816568039、6.839163598270797、82。
练习二:选择元素并打乱列表
编写程序,从水果列表中随机选出一个,再打乱整数列表,并打印这两个结果。本题重新设置种子,不接续练习一的随机序列。
要求
- 在程序中按下面的顺序写入。
fruits是待选水果,numbers是待打乱的整数。
import random
random.seed(42)
fruits = ["苹果", "香蕉", "橙子", "葡萄", "草莓"]
print(random.choice(fruits))
numbers = [1, 2, 3, 4, 5]
random.shuffle(numbers)
print(numbers)
- 两行输出依次为
苹果、[2, 4, 5, 3, 1]。
练习三:以随机点估计圆周率
编写程序,在边长为 2 的正方形内抽取 1000 个点,统计落在单位圆内的点数,并据此估计 π。
要求
- 在抽样前只写入下面三行。设置种子后直接开始抽样,中间不再调用其他随机函数。
n_points是样本数。
import random
random.seed(42)
n_points = 1000
- 每个点先取横坐标,再取纵坐标:
x = random.uniform(-1, 1)
y = random.uniform(-1, 1)
x * x + y * y <= 1时,将inside_circle加 1。inside_circle的初值为0。- 抽满 1000 个点后,估计值为
4 * inside_circle / n_points。 - 打印
圆内点数:795。估计值保留小数点后 4 位,打印π估计:3.1800。