Python中random使用详解

✨前言:

Python标准库中的random模块提供了生成伪随机数的工具。以下是random模块中常用方法的详解和使用实例:

✨ 1.random.seed(a=None, version=2):

seed的定义:
seed() 函数用于设置随机数生成器的种子,它在生成随机数时提供了可重复性。这个种子是生成随机数的起始点,相同种子生成的随机数序列是确定性的,也就是说,在相同的种子下,每次生成的随机数序列都是一样的。
在很多编程语言和库中,seed() 函数被用于初始化伪随机数生成器。在 Python 中,它常常与 random 模块、numpy 库或者机器学习库(比如 PyTorch、TensorFlow)中的随机数生成相关的函数一起使用。

初始化随机数生成器的内部状态。如果不显式调用,Python会在第一次生成随机数时自动调用。使用相同的种子(seed)会产生相同的随机数序列。

 import random

 random.seed(10)  # 设置种子
 print(random.random())  # 产生一个随机数

场景:当你需要可复现的结果时,比如在科学实验、算法比赛或者调试程序时,需要保证每次运行代码产生相同的随机序列。

✨2.random.random():

返回一个[0.0, 1.0)范围内的随机浮点数。

  print(random.random())

场景:当你需要生成一个标准的、范围在0到1之间的随机浮点数时,例如模拟概率事件。

✨3.random.uniform(a, b):

返回一个在[a, b]范围内的随机浮点数。

print(random.uniform(1, 10))

场景:当你需要获得一个指定范围内的随机浮点数时,例如模拟连续空间中的随机事件,比如物理模拟或者随机位置生成。

✨4.random.randint(a, b):

返回一个在[a, b]范围内的随机整数。

print(random.randint(1, 5))

场景:当你需要获得一个指定范围内的整数时,比如抽奖程序中抽取号码,或者选择列表中的随机索引。

✨5.random.randrange(start, stop=None, step=1):

返回一个在指定范围内,按照指定步长的一个随机数。

print(random.randrange(0, 10, 2))  # 生成0到10范围内的偶数

场景:和randint类似,但可以指定步长。适用于需要从连续范围内按特定间隔选择随机数的情况,如生成随机偶数。

✨6.random.choice(seq):

返回序列seq的一个随机元素。

 my_list = ['apple', 'banana', 'cherry']
 print(random.choice(my_list))

场景:从序列中随机选择一个元素时使用,例如从一副牌中随机抽取一张牌。

✨7.random.choices(population, weights=None, *, cum_weights=None, k=1):

返回一个列表,用于从population序列中随机选取k个元素。weights或cum_weights参数可以指定元素的选取概率。

 weights = [10, 1, 1]
 print(random.choices(my_list, weights=weights, k=2))

场景:从序列中随机抽取多个元素,并允许重复抽取和元素抽取概率不均时使用。例如,根据人口分布数据模拟人口抽样调查。

✨8.random.sample(population, k):

从population序列或集合中随机选取k个不重复的元素,以列表形式返回。

print(random.sample(my_list, 2))

场景:当你需要从集合中抽取不重复的随机元素时,比如随机分配门票编号或是洗牌时抽取指定数量的不重复卡牌。

✨9.random.shuffle(x[, random]):

将序列x中的元素随机打乱位置。如果指定了random参数,则应为一个无参函数,用于生成随机数。

random.shuffle(my_list)
print(my_list)
  

场景:用于打乱序列中元素的顺序,例如在洗牌、随机排序或者生成随机排列时使用。

✨10.random.getrandbits(k):

生成一个k比特长度的随机整数。

print(random.getrandbits(16))  # 生成一个16位比特长度的随机整数

场景:当需要较大的随机整数时,如生成随机密钥或者其他需要大量随机比特的场景。

✨11.random.gauss(mu, sigma):

产生一个服从高斯分布(也叫正态分布)的随机数,其平均值为mu,标准差为sigma。

print(random.gauss(0, 1))  # 产生一个平均值为0,标准差为1的高斯分布随机数

场景:当你需要生成服从高斯分布的随机数时,比如在统计模拟或者加入噪声到科学数据中。

⚠️使用random模块时要注意,生成的随机数是伪随机数。也就是说,它们通过算法产生的,并不是真正的随机,但对于大多数应用来说是足够好的。而且,由于这些数是由算法生成的,所以重复使用相同的种子将产生相同的随机数序列。这在测试和调试时是非常有用的,因为可以重现随机事件。

你可能感兴趣的:(Python,python,开发语言)