Python 中的 random 模块
在日常编程中,我们常常需要生成随机数、模拟掷骰子、洗牌、抽奖等功能。Python 提供了一个非常强大的标准库模块 —— random
,它可以帮助我们轻松实现这些功能。
本文将带你全面了解 random
模块的使用方法,并通过多个实例帮助你掌握如何在实际项目中应用它。
🔧 一、导入 random 模块
在使用 random
模块之前,我们需要先导入它:
import random
如果你只需要使用其中的某个函数,也可以这样导入:
from random import randint, choice
🎲 二、常用函数详解
1. 生成基本随机数
-
random.random()
返回一个 [0.0, 1.0) 范围内的浮点数。print(random.random()) # 输出类似:0.73456789
-
random.uniform(a, b)
返回一个 [a, b] 区间内的随机浮点数。print(random.uniform(1.0, 5.0)) # 输出如:3.245
-
random.randint(a, b)
返回一个 [a, b] 区间内的整数(包括 a 和 b)。print(random.randint(1, 6)) # 模拟掷骰子
-
random.randrange(start, stop[, step])
从 range(start, stop, step) 中随机选择一个整数。print(random.randrange(1, 10, 2)) # 可能输出:1, 3, 5, 7, 9
2. 随机选择与打乱序列
-
random.choice(sequence)
从非空序列中随机选择一个元素。fruits = ['apple', 'banana', 'cherry'] print(random.choice(fruits)) # 随机输出其中一个水果
-
random.choices(population, weights=None, *, cum_weights=None, k=1)
带权重地从总体中抽取多个元素(可重复)。colors = ['red', 'green', 'blue'] print(random.choices(colors, weights=[10, 1, 1], k=3)) # 更可能选 red
-
random.sample(population, k)
从序列中随机选择 k 个不重复的元素。nums = list(range(10)) print(random.sample(nums, 3)) # 输出三个不同的数字
-
random.shuffle(x)
就地打乱序列顺序(无返回值)。my_list = [1, 2, 3, 4, 5] random.shuffle(my_list) print(my_list) # 输出被打乱的列表
🔁 三、设置随机种子(Seed)
有时候我们需要让程序每次运行时生成相同的“随机”结果,比如用于测试或者重现某些行为。
这时就可以使用 random.seed()
函数来设定一个固定的种子:
random.seed(42)
print(random.random()) # 每次运行都会输出相同的结果
🔒 四、安全警告:不要用于加密场景!
虽然 random
模块很强大,但它使用的是伪随机数生成算法(Mersenne Twister),不适合用于安全相关操作(如密码生成、令牌生成等)。
对于这类需求,请使用 Python 的 secrets
模块(Python 3.6+):
import secretssecure_token = secrets.token_hex(16)
print("安全的随机 token:", secure_token)
🧪 五、实战案例分享
✅ 示例 1:模拟掷骰子游戏
def roll_dice():return random.randint(1, 6)print("你掷出的点数是:", roll_dice())
✅ 示例 2:生成随机密码(不推荐用于生产环境)
import stringdef generate_password(length=8):characters = string.ascii_letters + string.digits + string.punctuationreturn ''.join(random.choice(characters) for _ in range(length))print("随机密码:", generate_password())
⚠️ 注意:为了更安全的密码,请改用
secrets.choice()
替代random.choice()
。
✅ 示例 3:抽奖程序
participants = ["Alice", "Bob", "Charlie", "David", "Eve"]
winner = random.choice(participants)
print("恭喜获奖者:", winner)
💡 六、小技巧:格式化输出
在打印随机结果时,推荐使用 f-string 进行格式化输出,简洁又直观:
print(f"你摇到的点数是:{roll_dice()}")
📚 七、总结
函数名 | 功能 |
---|---|
random.random() | 生成 0~1 的浮点数 |
random.randint(a, b) | 生成 a~b 的整数 |
random.choice(seq) | 从序列中随机选一个元素 |
random.sample(seq, k) | 从序列中随机选 k 个不重复元素 |
random.shuffle(seq) | 打乱序列顺序 |
random.seed(n) | 设置随机种子 |
🙋♂️ 写在最后
random
模块是 Python 中最实用的标准库之一,适用于游戏开发、数据采样、模拟实验等多种场景。掌握它的使用,不仅能提高你的编程效率,也能让你写出更有趣、更有创意的程序。
如果你还有关于 random
模块的应用想法或疑问,欢迎留言讨论 😊
📌 喜欢这篇文章?欢迎点赞、收藏、转发! 📲 关注我,获取更多 Python 编程干货与实战技巧!