random是 Python 自带的随机数模块,提供了多种用于生成随机值、随机选择和随机打乱的方法,常用于游戏编程、测试模拟、数据集抽样、计算机学习随机化等场景。
应用场景包括:
(1)随机生成整数、浮点数、分布值。
(2)随机从列表中抽取或打乱元素。
(3)算法游戏中生成随机位置/玩法/对手操作。
(4)模拟组合、投炮、投色实验。
◆ ◆ ◆
核心概念
random 模块使用的是线性依赖的系列随机数(名为“伪随机数”),通过指定种子(seed)可以备份或循环随机进程。
常用的随机生成方式:
(1)在有限范围内随机生成整数。
(2)在 [0, 1) 或指定范围随机生成浮点数。
(3)从列表/元组中随机抽一个/多个元素。
(4)对列表进行原地打乱。
◆ ◆ ◆
应用举例
例 1:随机生成整数
import random
x = random.randint(1, 6) # 生成 1 ~ 6 之间的随机整数,包括端点
print("random int:", x)例 2:随机生成浮点数
import random
x = random.uniform(0, 10) # 生成 0 ~ 10之间的随机浮点数
print("random float:", x)例 3:随机从列表中抽取元素
import random
colors = ["red", "green", "blue"]
choice = random.choice(colors) # 随机选择列表中的一个元素
print("selected color:", choice)例 4:随机打乱列表
import random
numbers = [1, 2, 3, 4, 5]
random.shuffle(numbers) # 原地随机打乱列表
print("shuffled:", numbers)例 5:随机抽取多个元素
import random
items = ["apple", "banana", "orange", "peach"]
selection = random.sample(items, 2) # 随机抽两个不重复元素
print("picked:", selection)例 6:生成正态分布的随机数
import random
x = random.gauss(0, 1) # 生成一个服从均值为 0,标准差为 1 的正态分布随机数
print("gauss sample:", x)例 7:从区间中按步长随机选择整数
import random
x = random.randrange(0, 10, 2) # 从 0 到 10(不含 10)中每隔 2 取一个
print("randrange result:", x)◆ ◆ ◆
常用函数速览
choice(seq)
从序列中随机选择一个元素。
参数:seq 为非空序列(如列表、元组或字符串)
返回:该序列中的任一元素
expovariate(lambd)
返回一个指数分布的随机浮点数。
参数:lambd 为 1/期望值(必须为正)
返回:float
gauss(mu, sigma)
返回一个符合正态(高斯)分布的随机浮点数。
参数:mu 为均值,sigma 为标准差
返回:float
randint(a, b)
返回一个 a ~ b 之间的随机整数(包括 a 和 b)。
参数:a, b 为整数,允许 a > b
返回:int
randrange(start, stop[, step])
返回一个从 range(start, stop, step) 中选出的随机整数(不含 stop)。
参数:start 为起始,stop 为结束(不包含),step 为步长
返回:int
random()
返回 [0.0, 1.0) 之间的随机浮点数。
参数:无
返回:float
sample(population, k)
从 population 中抽取 k 个不重复元素,组成新列表。
参数:population 为原序列;k 为抽取数量(不得超过 len(population))
返回:包含 k 个元素的新列表
seed(n)
重置随机数生成器的种子,使随机序列可复现。
参数:n 可为整数、字符串或 None(使用系统时间)
返回:None
shuffle(seq)
原地打乱序列顺序。
参数:seq 必须是可变序列(如列表)
返回:None;序列本身会被修改
triangular(low, high[, mode])
返回一个三角分布的随机数。
参数:low(最小值)、high(最大值)、mode(峰值,可选)
返回:float
uniform(a, b)
返回一个在 [a, b] 或 [b, a] 范围内的随机浮点数。
参数:a, b 为任意顺序的数值
返回:float
“点赞有美意,赞赏是鼓励”
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.