Python random模块常用方法与实战应用详解

橘子海
橘子海
发布时间:2026-10-14| 2人浏览过
原创

本文详细介绍Python标准库random的常用方法,包括生成随机浮点数、指定范围整数、从序列中选取元素及打乱列表等操作。通过具体代码示例,演示如何在实际开发中利用random模块生成随机验证码,帮助开发者快速掌握Python随机数处理技巧。

Python random模块核心方法解析

在Python开发中,random模块提供了多种生成随机数据的方法。展示了该模块的核心功能,包括生成0到1之间的随机浮点数、指定上下限的随机整数、按步长选取随机数,以及从各类序列(如列表、元组、字符串)中随机抽取元素。此外,该模块还支持从序列中随机截取指定长度的子序列,并对列表元素进行原地打乱处理。


import random
 
# random.random()用于生成一个 0 到 1 的随机浮点数: 0 <= n < 1.0
print(random.random()) # 0.18246795790915304


# random.randint(a, b),用于生成一个指定范围内的整数。
# 其中参数a是下限,参数b是上限,生成的随机数n: a <= n <= b
print(random.randint(1, 10)) # 8


# random.randrange([start], stop[, step]),
# 从指定范围内,按指定基数递增的集合中获取一个随机数
# 如:random.randrang(10, 100, 2),结果相当于从[10,12,14,16, ... 96,98]序列中选取一个随机数
# random.randrang(10, 100, 2) 在结果上与 random.choice(range(10,100,2)) 等效
print(random.randrange(1,10)) # 5


# random.choice 从序列中获取一个随机元素。其函数原型为:random.choice(sequence)。参数sequence表示一个有序类型。
# 这里要说明 一下:sequence在python不是一种特定的类型,而是泛指一系列的类型。
# list, tuple, 字符串都属于sequence。
print(random.choice("Python")) # y
print(random.choice(["JGood", "is", "a", "handsome", "boy"])) # JGood
print(random.choice(("Tuple", "List", "Dict"))) # List


# random.sample(sequence, k),从指定序列中随机获取指定长度的片段。sample函数不会修改原有序列。
print(random.sample([1,2,3,4,5],3)) #[1,2,5]


# random.shuffle(x[, random]),用于将一个列表中的元素打乱。
p = ["Python", "is", "powerful", "simple", "and so on..."]
print(random.shuffle(p))
# ['powerful', 'simple', 'is', 'Python', 'and so on...']


# random.uniform(a, b),用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限。
# 如果 a < b,则生成的随机数n: b >= n >= a
# 如果 a > b,则生成的随机数n: a >= n >= b
print random.uniform(10, 20) # 14.73
print random.uniform(20, 10) # 18.579

random模块在实际场景中的应用

在实际应用场景中,random模块常用于数据模拟或测试用例生成。演示了如何生成随机浮点数和整数,以及如何从列表或字符串中随机选择单个元素或截取固定长度的片段。代码还展示了使用shuffle函数将列表元素顺序随机打乱的过程,这在需要随机排序或洗牌算法的场景中非常实用。


import random
lis = [1,2,3,4,5,6,7,8,9,10]

# 随机生成浮点数
print(random.random())     #随机返回0~1之间的浮点数
0.47626693393991737
print(random.uniform(1,10))   #随机返回1~10之间的浮点数
4.0844448042717225

# 随机生成整数
print(random.randint(1,10))     #随机生成1~10之间的整数
8
print(random.randrange(0,10,2))   #随机生成0~10之间的偶数
8
print(random.randrange(1,10,2))   #随机生成1~10之间的基数
1

# 操作序列、字符串
## 从序列、字符串中随机返回一个元素
print(random.choice(lis))
4
print(random.choice('abcdefg'))
g

## 随机截取序列、字符串中指定长度片段
print(random.sample(lis,2))
[9, 4]
print(random.sample('abcdefg',2))
['f', 'a']

## 打乱一个序列
random.shuffle(lis)
print(lis)
[7, 6, 1, 2, 10, 3, 4, 8, 5, 9]

实战:生成随机验证码示例

一个典型的实际应用是生成随机验证码。展示了一个简单的6位验证码生成逻辑:通过循环6次,每次随机判断是否生成字母或数字。若随机数不等于当前索引,则生成大写英文字母(ASCII 65-90),否则生成0-9的数字,最终拼接成字符串输出。这种方法简单有效,适用于基础的身份验证场景。


import random
 
checkcode = ''
for i in range(6):
  current = random.randrange(0, 6)
  if current != i:
    temp = chr(random.randint(65, 90))
  else:
    temp = random.randint(0, 9)

  checkcode += str(temp)
print(checkcode)

以上内容涵盖了Python random模块的主要用法及实际案例。如需了解更多关于Python随机数处理的细节,建议参考官方文档或本站其他相关技术文章。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。