Python随机数生成:不只是random()那么简单
随机数在Python开发中有着广泛应用,从数据采样到机器学习,再到简单的抽奖程序都离不开它。许多开发者习惯直接使用random.random(),但Python的随机模块提供了更多实用功能。
让我们从一个常见场景开始——抽奖程序:
import random
import secrets
# 设置随机种子确保可复现性
random.seed(42)
# 从列表中随机选择
participants = ["Alice", "Bob", "Charlie", "Diana"]
winner = random.choice(participants)
print(f"获奖者: {winner}")
# 加权随机选择(Bob中奖概率是其他人的两倍)
weighted_winner = random.choices(
participants,
weights=[1, 2, 1, 1],
k=1
)[0]
print(f"加权获奖者: {weighted_winner}")
# 安全关键场景使用secrets模块
secure_token = secrets.token_hex(16)
print(f"安全令牌: {secure_token}")
关键要点:
random.seed()确保结果可复现,对测试非常重要random.choices()支持加权随机,适合业务规则复杂的场景secrets模块用于加密安全场景,如生成密码或令牌
性能提示: 批量生成随机数时,使用random.choices(population, k=n)比循环调用random.choice()快得多。
记住,没有真正的“随机”,只有精心设计的伪随机。选择合适的方法,能让你的代码既高效又安全。你在哪些项目中用过随机数生成呢?