Python 如何生成 X 到 Y 之间的随机整数?

random.randint(x, y) 生成含两端点的随机整数;random.randrange(x, y+1) 等效;secrets.randbelow 用于安全场景。本文给出各写法与区间开闭差异。

最佳实践
Python 如何生成 X 到 Y 之间的随机整数?封面

最常用:random.randint(x, y)——两端都包含,randint(1, 10) 可能返回 1 到 10 的任何整数。

三种写法对比

import random

random.randint(1, 10)        # 1-10,含两端(最常用)
random.randrange(1, 11)      # 同上,但遵循 range 左闭右开习惯,要 +1
random.choice(range(1, 11))  # 也能,但没必要

安全场景用 secrets

密码学相关(令牌、验证码)不要用 random:

import secrets
secrets.randbelow(10) + 1    # 密码学随机来源,但只有 10 种结果,不能直接作安全令牌

可复现的随机

测试里需要结果可复现:

random.seed(42)
random.randint(1, 100)   # 同一受控版本、相同调用顺序下复现;不是每次调用都相同

常见问题(FAQ)

Q:randint(0, 1) 是二选一吗? 是,等概率返回 0 或 1。

Q:要浮点随机数呢? random.uniform(x, y);由于浮点舍入,上端点可能被包含,不能按 randrange 的右开规则理解。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台