杰瑞科技汇

Python randint 范围如何正确设置?

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

Python randint 范围如何正确设置?-图1
(图片来源网络,侵删)

详细说明与示例

函数签名

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

从上面的例子可以看出,110 都有可能被抽中。

示例 2:生成 0 到 100 之间的随机整数

Python randint 范围如何正确设置?-图2
(图片来源网络,侵删)
import random
score = random.randint(0, 100)
print(f"模拟考试分数: {score}")
# 可能的输出:
# 模拟考试分数: 88
# 模拟考试分数: 0
# 模拟考试分数: 100

这里 0100 都在可能的输出范围内。

重要注意事项

注意:参数顺序必须是 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() 的对比

randintrandrange 的一个特例,理解它们的区别很重要。

特性 random.randint(a, b) random.randrange(start, stop[, step])
范围 包含 ab ([a, b]) 不包含 stop ([start, stop))
参数 两个参数:a (起始), b (结束) 至少两个参数:start (起始), stop (结束)
等价写法 randint(a, b) randrange(a, b + 1)

randrange 示例:

Python randint 范围如何正确设置?-图3
(图片来源网络,侵删)
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) 的范围是包含 ab 的,即 [a, b],这是它与 randrange 最显著的区别,在使用时,请确保 a <= b,否则会报错。

分享:
扫描分享到社交APP
上一篇
下一篇