十分想念顺店杂可。。。

Python 的random模块是标准库中用于生成伪随机数的核心模块,适用于游戏开发、抽样模拟、随机分配等场景。使用前需导入:import random

一、基本随机数生成(浮点数)

  • random.random():生成一个 [0.0, 1.0) 区间 的随机浮点数(包含 0.0,不包含 1.0)。

示例:

import random

print(random.random())  # 输出类似:0.7626384175562022(每次运行结果不同)

二、随机整数生成

1. random.randint(a, b)

生成一个 [a, b] 区间 的随机整数(包含 a 和 b,要求 a ≤ b)。

示例:

print(random.randint(1, 10))  # 随机输出1-10中的一个整数(如5)
2. random.randrange(start, stop[, step])

从指定范围的整数序列中随机选择一个元素,类似range()的参数规则:

  • start:起始值(默认 0)
  • stop:终止值(不包含)
  • step:步长(默认 1)

示例:

print(random.randrange(0, 10, 2))  # 从0,2,4,6,8中随机选一个(如6)
print(random.randrange(5))         # 从0-4中随机选一个(如3)

三、序列随机操作

1. random.choice(seq)

从非空序列(列表、元组、字符串等)中 随机选择一个元素(序列为空会报错)。

示例:

fruits = ["苹果", "香蕉", "橙子"]
print(random.choice(fruits))  # 随机输出一个水果(如"香蕉")

print(random.choice("hello"))  # 随机选一个字符(如"l")
2. random.sample(seq, k)

从序列中 随机选择 k 个不重复的元素,返回一个新列表(k 不能大于序列长度)。

示例:

nums = [1, 2, 3, 4, 5]
print(random.sample(nums, 2))  # 随机选2个不重复元素(如[3,1])
3. random.shuffle(seq)

就地打乱序列(直接修改原序列,仅对可变序列如列表有效)。

示例:

cards = ["红桃A", "方块2", "黑桃3"]
random.shuffle(cards)
print(cards)  # 输出打乱后的列表(如["方块2", "黑桃3", "红桃A"])

四、指定范围的随机浮点数

  • random.uniform(a, b):生成一个 [a, b] 或 [b, a] 区间 的随机浮点数(根据 a 和 b 的大小自动调整范围)。

示例:

print(random.uniform(2, 5))   # 生成2-5之间的浮点数(如3.892)
print(random.uniform(5, 2))   # 生成2-5之间的浮点数(如4.103)

五、随机种子(可重现性)

random.seed(seed):设置随机数种子(整数或字符串)。
作用:种子相同则生成的随机数序列完全相同,用于固定随机结果(如调试、复现实验)。

示例:

# 第一次设置种子
random.seed(10)
print(random.random())  # 输出:0.5714025946899135

# 再次设置相同种子,结果相同
random.seed(10)
print(random.random())  # 输出:0.5714025946899135(与上一次完全一致)

六、概率分布随机数

random模块还提供了基于各种概率分布的随机数生成函数,适用于统计模拟:

  • random.gauss(mu, sigma):生成符合高斯分布(正态分布)的随机数(mu 为均值,sigma 为标准差)。
  • random.expovariate(lambd):生成指数分布的随机数(lambd 为 λ 参数)。
  • random.triangular(low, high, mode):生成三角分布的随机数。

示例(正态分布):

# 生成均值为100,标准差为10的正态分布随机数(类似智商分布)
print(random.gauss(100, 10))  # 输出类似:105.238(大概率在70-130之间)

注意事项

  1. random生成的是伪随机数(基于数学算法),并非真正的随机数,适合大多数场景但不适合加密。
  2. 加密级随机数需使用secrets模块(Python 3.6+),如secrets.randbelow(10)
  3. 序列操作中,shuffle()会修改原序列,而sample()返回新列表,不影响原序列。

更多函数可参考官方文档:random — 生成伪随机数

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐