Python引入random库后怎么生成随机整数和浮点数

码头散步
码头散步
发布时间:2026-11-14 | 5人浏览过
原创

详细讲解在Python中引入random库后生成随机整数与随机浮点数的核心方法,深入对比randint、randrange、random()与uniform的取值区间、边界特性及典型应用场景。

在 Python 中生成随机数,最直接有效的方式是使用语言内置的 random 模块。在代码开头写入 import random 之后,生成整数主要依靠 randint() 与 randrange() 两个函数,生成浮点数则主要使用 random() 与 uniform() 函数。掌握它们的核心在于厘清“端点是否包含”以及“连续区间如何映射”。本文将分步展开具体用法、语法边界与典型示例。

Python引入random库后怎么生成随机整数和浮点数
图 1:引入 random 模块后的函数调用与数据类型分支流程

一、引入 random 库与运行机制准备

random 是 Python 自带的标准库,因此不需要通过 pip 另外安装。在任何需要生成随机数值的 .py 脚本或交互式命令行中,直接执行导入操作即可:

import random

该模块底层基于 Mersenne Twister(马森缠绕器)算法实现伪随机数生成。由于其产生的数值序列在数学上具备均匀分布特性,非常适合模拟实验、游戏逻辑、随机乱序等常规场景。但需要明确其边界:伪随机数并不具备密码学安全性,若需要生成安全的身份令牌或加密密码,应当选择 Python 的 secrets 模块。

二、生成随机整数:randint 与 randrange

处理整数场景时,开发者通常有两种需求:一种是模拟“掷骰子”这类包含两端点值的闭区间取值;另一种是遵循类似 Python 列表索引规则的半开半闭区间取值,或需要指定取值步长。

1. 使用 random.randint(a, b) 生成闭区间整数

randint(a, b) 函数接收两个整数参数 a 和 b,返回一个满足 a <= N <= b 的随机整数。这里两端的值均包含在可能的结果中。

import random

# 模拟掷一个6面骰子(取值范围 1 到 6,包含 1 和 6)
dice = random.randint(1, 6)
print("骰子点数示例:", dice)

# 生成一个 -10 到 10 之间的随机整数
offset = random.randint(-10, 10)
print("偏移量示例:", offset)

运行结果示例:

骰子点数示例: 4
偏移量示例: -3
参数约束提示:调用 randint(a, b) 时,参数 a 必须小于或等于 b。若传入 randint(10, 1),Python 会直接抛出 ValueError: empty range for randrange() 异常。

2. 使用 random.randrange() 生成带步长或半开区间的整数

randrange() 的参数行为与 Python 内置的 range() 函数完全一致,其语法为 randrange(start, stop[, step])。当只传入一个参数时,表示 randrange(stop),取值范围为 0 <= N < stop(不包含 stop)。

import random

# 生成 0 到 9 之间的整数(不包含 10)
num1 = random.randrange(10)
print("0到9随机数示例:", num1)

# 生成 1 到 100 之间的随机奇数(从 1 开始,步长为 2,止于 101 前)
odd_num = random.randrange(1, 101, 2)
print("1到99之间的奇数示例:", odd_num)

# 生成 0 到 100 之间的随机偶数
even_num = random.randrange(0, 101, 2)
print("0到100之间的偶数示例:", even_num)
Python引入random库后怎么生成随机整数和浮点数
图 2:randint 与 randrange 在区间边界及步长上的行为对比

三、生成随机浮点数:random 与 uniform

在涉及概率测算、几何坐标生成、物理模拟等需要连续数值的场景中,整数不再适用。Python 提供了生成基础比例值与生成任意区间浮点数的直接工具。

1. 使用 random.random() 生成 [0.0, 1.0) 浮点数

random.random() 不接收任何参数,每次调用返回一个在半开区间 [0.0, 1.0) 内的均匀分布浮点数。即结果可能为 0.0,但始终严格小于 1.0。

import random

# 生成基础浮点数
val = random.random()
print("基础浮点数示例:", val)

# 场景:根据概率执行逻辑(例如 30% 几率触发暴击)
if random.random() < 0.30:
    print("触发 30% 几率事件")
else:
    print("未触发")

运行结果示例:

基础浮点数示例: 0.742819034172849
未触发

2. 使用 random.uniform(a, b) 生成任意区间的浮点数

如果需要一个特定区间(例如温度在 18.5 到 26.0 摄氏度之间)的浮点数,直接使用 uniform(a, b) 最为便捷。该函数返回一个在 [a, b] 之间的浮点数。

import random

# 生成 10.0 到 20.0 之间的浮点数
temp = random.uniform(10.0, 20.0)
print("温度模拟值示例:", temp)

# 反向参数同样有效:uniform(20.0, 10.0) 效果等同
val_reverse = random.uniform(20.0, 10.0)
print("反向区间值示例:", val_reverse)

运行结果示例:

温度模拟值示例: 16.48201538920145
反向区间值示例: 12.19044238510822
Python引入random库后怎么生成随机整数和浮点数
图 3:random() 到 uniform(a, b) 的数值区间缩放原理

四、固定随机序列:随机种子(seed)的应用

在开发测试或科学计算中,经常需要每次执行程序时产生一模一样的“随机数”,以便重现 Bug 或对比不同算法在相同输入下的表现。此时可以通过 random.seed() 手动设定种子值。

import random

# 固定种子值为 42
random.seed(42)
print("第一组数据:")
print("整数:", random.randint(1, 100))
print("浮点数:", round(random.uniform(1.0, 10.0), 3))

# 再次重设相同种子
random.seed(42)
print("第二组数据(与第一组完全一致):")
print("整数:", random.randint(1, 100))
print("浮点数:", round(random.uniform(1.0, 10.0), 3))

运行结果示例:

第一组数据:
整数: 82
浮点数: 2.125
第二组数据(与第一组完全一致):
整数: 82
浮点数: 2.125

只要种子固定,后续调用随机函数的顺序与参数保持一致,输出的数列就会分毫不差。如果不显式调用 random.seed(),Python 在初始化时会自动使用操作系统的随机源(如系统时钟或熵池)作为默认种子。

五、函数速查表与选型决策指南

为了在实际编码中快速选择最合适的函数,可参考下方的特性对照表及决策路径:

函数名称 返回类型 区间范围 典型应用场景
random.randint(a, b) int [a, b](双闭区间) 掷骰子、随机序号抽奖、两端均需覆盖的整数需求
random.randrange(start, stop[, step]) int [start, stop)(左闭右开) 配合列表索引、随机步长整数(如随机偶数、奇数)
random.random() float [0.0, 1.0)(左闭右开) 概率判定(百分比事件触发)、比率缩放基数
random.uniform(a, b) float [a, b](连续均匀) 物理模拟、温度/坐标/金额等任意浮点数值生成
Python引入random库后怎么生成随机整数和浮点数
图 4:Python random 常用函数选型决策指南
相关专题:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表