random.randint(a, b) 函数会生成一个 包含 a 和 b 在内的随机整数,也就是说,它的范围是 闭区间 [a, b]。

详细说明与示例
函数签名
random.randint(a, b)
- a: 范围的起始整数(包含)。
- b: 范围的结束整数(包含)。
- 返回值: 返回一个在
[a, b]范围内的随机整数N,满足a <= N <= b。
使用示例
让我们来看几个例子来直观地理解。
示例 1:生成 1 到 10 之间的随机整数(包含 1 和 10)
import random
# 生成一个 1 到 10 之间的随机整数
random_number = random.randint(1, 10)
print(f"生成的随机数是: {random_number}")
# 可能的输出:
# 生成的随机数是: 7
# 生成的随机数是: 1
# 生成的随机数是: 10
# 生成的随机数是: 5
从上面的例子可以看出,1 和 10 都有可能被抽中。
示例 2:生成 0 到 100 之间的随机整数

import random
score = random.randint(0, 100)
print(f"模拟考试分数: {score}")
# 可能的输出:
# 模拟考试分数: 88
# 模拟考试分数: 0
# 模拟考试分数: 100
这里 0 和 100 都在可能的输出范围内。
重要注意事项
注意:参数顺序必须是 a 在前,b 在后,且 a 必须小于或等于 b。
a > b,程序会抛出ValueError异常。
import random
try:
# 这会引发错误,因为 10 大于 1
random_number = random.randint(10, 1)
except ValueError as e:
print(f"错误: {e}")
# 输出:
# 错误: empty range for randrange() (10,1, -9)
与 random.randrange() 的对比
randint 是 randrange 的一个特例,理解它们的区别很重要。
| 特性 | random.randint(a, b) |
random.randrange(start, stop[, step]) |
|---|---|---|
| 范围 | 包含 a 和 b ([a, b]) |
不包含 stop ([start, stop)) |
| 参数 | 两个参数:a (起始), b (结束) |
至少两个参数:start (起始), stop (结束) |
| 等价写法 | randint(a, b) |
randrange(a, b + 1) |
randrange 示例:

import random
# randrange 的范围是 [start, stop),不包含 stop
# 下面的代码生成 1 到 9 之间的随机整数
random_number_from_randrange = random.randrange(1, 10)
print(f"使用 randrange 生成的随机数: {random_number_from_randrange}")
# 可能的输出:
# 使用 randrange 生成的随机数: 9
# 使用 randrange 生成的随机数: 1
# 使用 randrange 生成的随机数: 5
# 注意:它永远不会输出 10
从上面的对比可以看出,random.randint(1, 10) 和 random.randrange(1, 11)(或 random.randrange(1, 10 + 1))的效果是完全一样的。randint 的写法更简洁,语义更清晰(“包含两端”)。
完整代码示例
下面是一个综合示例,演示如何生成指定数量的随机数,并验证它们是否都在 randint 的定义范围内。
import random
# 设置随机种子,确保每次运行结果可复现(可选)
# random.seed(42)
# 定义范围
start = 50
end = 60
num_of_samples = 20
print(f"正在生成 {num_of_samples} 个在 [{start}, {end}] 范围内的随机整数...")
# 生成并打印随机数
random_numbers = []
for _ in range(num_of_samples):
num = random.randint(start, end)
random_numbers.append(num)
print(num)
# 验证所有生成的数字是否都在 [start, end] 范围内
is_valid = all(start <= num <= end for num in random_numbers)
print("\n--- 验证结果 ---")
if is_valid:
print("成功!所有生成的数字都在指定的闭区间内。")
else:
print("错误!存在超出范围的数字。")
print(f"生成的数字列表: {random_numbers}")
运行结果可能如下:
正在生成 20 个在 [50, 60] 范围内的随机整数...
52
58
50
60
55
51
59
57
53
54
56
50
58
60
52
59
51
57
55
58
--- 验证结果 ---
成功!所有生成的数字都在指定的闭区间内。
生成的数字列表: [52, 58, 50, 60, 55, 51, 59, 57, 53, 54, 56, 50, 58, 60, 52, 59, 51, 57, 55, 58]
记住这个关键点:random.randint(a, b) 的范围是包含 a 和 b 的,即 [a, b],这是它与 randrange 最显著的区别,在使用时,请确保 a <= b,否则会报错。
