Python Random 模块使用完全指南

一、模块基础与核心功能

1. 模块导入与初始化

所有随机操作需先导入模块:

python 复制代码
import random  # 标准导入方式
import random as rd  # 别名导入(推荐)

核心原理 :默认基于梅森旋转算法生成伪随机数,可通过random.seed()设置种子实现结果重现

2. 随机数生成方法

2.1 整型随机数
python 复制代码
# 生成1-10闭区间随机整数(含10)
print(rd.randint(1, 10))  # 示例输出:7

# 生成0-100步长5的随机数(0,5,10,...,100)
print(rd.randrange(0, 101, 5))  # 示例输出:45

2.2 浮点型随机数

python 复制代码
# 生成0.0~1.0之间的浮点数
print(rd.random())  # 示例输出:0.5488135

# 生成指定范围的浮点数(支持倒序范围)
print(rd.uniform(3.5, 10.0))  # 示例输出:6.782341

二、序列操作与随机选择

1. 元素选择

python 复制代码
fruits = ['apple', 'banana', 'orange']

# 单个随机选择
print(rd.choice(fruits))  # 示例输出:'banana'

# 加权随机选择(权重比为1:2:3)
print(rd.choices(fruits, weights=[1,2,3], k=2))  # 示例输出:['orange', 'banana'] 

2. 抽样与洗牌

python 复制代码
# 无重复抽样(类似彩票开奖)
print(rd.sample(range(100), 5))  # 示例输出:[42, 15, 73, 88, 3] 

# 列表原地洗牌
cards = ['A', 'K', 'Q', 'J']
rd.shuffle(cards)
print(cards)  # 示例输出:['Q', 'A', 'J', 'K']

三、高级应用场景

1. 随机种子控制

python 复制代码
rd.seed(2025)  # 固定随机序列
print(rd.randint(1,100))  # 固定输出:83
print(rd.random())  # 固定输出:0.2846

应用价值:在机器学习中保证实验可复现性

2. 特殊分布生成

python 复制代码
# 正态分布(均值100,标准差15)
print(rd.gauss(100, 15))  # 示例输出:103.782

# 指数分布(lambda=0.5)
print(rd.expovariate(0.5))  # 示例输出:1.342

3. 位级随机数

python 复制代码
# 生成128位随机数(用于低级加密)
print(rd.getrandbits(128))  # 输出:32348723948723948723984723984

四、实战开发案例

1. 抽奖系统开发

python 复制代码
participants = ['张三', '李四', '王五', '赵六']
winner = rd.sample(participants, k=2)  # 抽取2名不重复获奖者
print(f"中奖者:{', '.join(winner)}")

2. 验证码生成器

python 复制代码
def generate_code(length=6):
    chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
    return ''.join(rd.choices(chars, k=length))

print(generate_code())  # 示例输出:'X3G9F2'

3. 蒙特卡洛模拟

python 复制代码
import math

def pi_estimation(n):
    inside = 0
    for _ in range(n):
        x, y = rd.random(), rd.random()
        if math.sqrt(x**2 + y**2) <= 1:
            inside +=1
    return 4 * inside / n

print(pi_estimation(1000000))  # 近似π值输出:3.141592

五、性能优化建议

​1. 批量生成:使用numpy生成大型随机矩阵

python 复制代码
import numpy as np
big_matrix = np.random.randint(0,100,(1000,1000))  # 百万级随机数生成

​2. 安全随机:敏感操作使用secrets模块

python 复制代码
import secrets
print(secrets.token_hex(16))  # 生成加密安全随机数

六、注意事项

  1. ​种子设置:仅在需要重现结果时使用,默认采用系统时间熵源
  2. 浮点精度:金融计算建议使用decimal模块处理
  3. 线程安全:多线程环境下建议使用独立Random实例
  4. ​密码学警告:不要用于安全敏感场景,应使用secrets模块
相关推荐
yaoh.wang14 小时前
力扣(LeetCode) 13: 罗马数字转整数 - 解法思路
python·程序人生·算法·leetcode·面试·职场和发展·跳槽
小鸡吃米…15 小时前
Python PyQt6教程七-控件
数据库·python
1916zz15 小时前
Extreme programing 方利喆 _ 江贤晟
python
长安牧笛15 小时前
智能鞋柜—脚气终结者,内置温湿度传感器和紫外线灯,晚上回家,把鞋放进去,自动检测湿度,湿度超标就启动烘干+紫外线杀菌,第二天穿鞋干燥无异味。
python
weixin_4577600015 小时前
PIL库将图片位深度是1、8、32统一转换为24的方法
python
Lucky高17 小时前
Pandas库入门
python·pandas
小鸡吃米…17 小时前
Python PyQt6教程三-菜单与工具栏
开发语言·python
Jack电子实验室17 小时前
【杭电HDU】校园网(DeepL/Srun)自动登录教程
python·嵌入式硬件·计算机网络·自动化
木头左17 小时前
二值化近似计算在量化交易策略中降低遗忘门运算复杂度
python
Jelena1577958579217 小时前
Java爬虫淘宝拍立淘item_search_img拍接口示例代码
开发语言·python