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

点赞有美意,赞赏是鼓励