在 Python 中生成随机数主要使用内置的 random
模块,以下是常见用法及示例
1. 基础随机数生成
import random # 生成 [0.0, 1.0) 之间的随机浮点数 rand_float = random.random() print(rand_float) # 示例输出: 0.548813502 # 生成 [a, b] 之间的随机整数 rand_int = random.randint(1, 10) # 包含 1 和 10 print(rand_int) # 示例输出: 7 # 生成 [a, b) 之间的随机浮点数 rand_uniform = random.uniform(1.5, 5.5) print(rand_uniform) # 示例输出: 3.827533
2. 高级随机操作
import random # 从序列中随机选择一个元素 fruits = ["苹果", "香蕉", "橙子", "芒果"] choice_fruit = random.choice(fruits) print(choice_fruit) # 示例输出: "香蕉" # 随机打乱序列(原地修改) cards = ["A", "K", "Q", "J", 10] random.shuffle(cards) print(cards) # 示例输出: ["Q", 10, "A", "J", "K"] # 从序列中随机抽取 k 个不重复元素 sample_nums = random.sample(range(1, 100), 5) print(sample_nums) # 示例输出: [42, 17, 88, 3, 76]
3. 设置随机种子(可复现结果)
import random # 设置种子后,每次运行结果相同 random.seed(42) # 任意整数 print(random.randint(1, 100)) # 总是输出 82 print(random.random()) # 总是输出 0.639426798
4. 安全随机数(加密场景)
#使用 secrets 模块生成密码学安全的随机数: import secrets # 生成 [0, 255] 的安全随机整数 secure_num = secrets.randbelow(256) print(secure_num) # 生成 16 字节的安全随机 token token = secrets.token_hex(16) # 32位十六进制字符串 print(token) # 示例: 5f8c2d...e4a
5. 高效生成随机数组(NumPy)
import numpy as np # 生成 3x3 的 [0,1) 随机浮点数矩阵 rand_matrix = np.random.rand(3, 3) print(rand_matrix) # 生成 [10, 20) 的 5 个整数 rand_ints = np.random.randint(10, 20, size=5) print(rand_ints) # 示例: [14 11 18 12 19]
关键区别说明
方法 | 特点 | 适用场景 |
---|---|---|
random.random() | 快速生成简单浮点数 | 一般随机需求 |
random.randint() | 包含两端整数 | 随机整数 |
secrets 模块 | 密码学安全 | 密钥/令牌生成 |
numpy.random | 高效生成数组 | 科学计算/大数据 |
设置 seed() | 结果可复现 | 实验调试 |