Python - 随机模块



random 模块是一个标准库模块,它提供用于各种操作的函数,例如随机数生成、洗牌序列和进行随机选择。在本模块中,我们将检查 Python random 模块的功能,并提供现实世界的示例来演示如何使用它。

在开发应用程序时,使用 python “random” 模块对于统计分析、游戏、为敏感数据保护加密密钥等任务至关重要。让我们浏览一下不同类型数据的各种方法。

  • 对于整数,可以通过 randint() 和 randrange() 函数实现从范围内的均匀选择,其中该函数随机选择指定范围内的整数,确保该范围内的每个整数都有相同的被选择的概率。

  • 对于列表、元组或任何其他可迭代的顺序数据,我们可以通过 choice()、choices() 等函数实现相同的功能。random 模块几乎所有内置函数都依赖于基本函数random.random(),该函数生成一个随机浮点值。

  • 在统计分析领域,使用各种分布(例如高斯分布、均匀分布、对数正态分布)来提取数据的见解。random 模块提供从这些分布生成样本的函数。

我们知道 random 模块提供了各种生成随机数的函数,但是,可能不清楚的是,这些函数是隐藏的 random.Random 类实例的绑定方法。这意味着,python 创建一个 Random 类的实例并将函数绑定到该实例。

Python random.Random 类

Random 类执行 random 模块使用的默认伪随机数生成器。构造函数 random.Random([seed]) 负责创建 Random 类的实例,从而允许初始化随机数生成器。

种子决定了生成随机数的起点。`getstate()` 和 `setstate()` 等函数允许我们访问和更新生成器的内部状态,从而能够保存和恢复序列。

Python `random.SystemRandom` 类

`random` 模块不仅提供了 `Random` 类用于生成随机数,还提供了 `SystemRandom` 类,该类旨在使用系统提供的源来生成随机数。此类使用 `os.urandom()` 函数,该函数生成加密安全的字节和随机数。

让我们看看 `random` 模块中的各种函数。

整数函数

以下是专门用于处理整数的函数:

序号 函数及描述
1

Python `random.randrange([start,] stop [,step])` 函数

此函数从指定的范围内返回一个随机选择的元素。

2

Python `random.randint(a,b)` 函数

此函数接受两个参数,并返回这两个参数之间范围内的整数(包含)。

3

Python `random.getrandbits(a)` 函数

此函数返回一个具有随机位数的非负整数。

4

`random.random()`

一个随机浮点数 r,使得 0 小于等于 r 且 r 小于 1。

序列函数

以下是专门用于处理序列的函数:

序号 函数及描述
1

Python `random.choice(seq)` 函数

此函数接受一个序列,并从该序列中返回一个随机元素。

2

Python `random.choices()` 函数

此函数从给定序列中返回特定大小的列表,并允许重复选择。

3

Python `random.shuffle(seq)` 函数

此函数会打乱一个可变序列,并返回一个新的已打乱的序列。

4

Python `random.sample()` 函数

此函数从给定序列中返回特定大小的列表,不允许重复选择。

分布函数

以下是专门用于处理分布的函数:

序号 函数及描述
1

Python `random.binomialvariate(n,p)` 函数

此函数返回一个整数,表示在 n 次试验中,概率为 p 时观察到的成功次数。

2

Python `random.uniform(a, b)` 函数

此函数返回 a, b 之间的一个随机浮点数(包含)。

3

Python `random.triangular(a,b,mode)` 函数

此函数返回 a, b 之间的一个浮点数(包含),并在边界之间指定一个模式。

4

Python `random.betavariate()` 函数

此函数返回一个服从**Beta 分布**的随机变量。

5

Python `random.expovariate(lambd=)` 函数

如果参数 lambd 为正,则该函数返回的值范围从 0 到正无穷大。如果 lambd 为负,则返回的值介于负无穷大和 0 之间。

6

Python `random.gammavariate(alpha,beta)` 函数

此函数返回一个服从**Gamma 分布**的随机变量,形状参数为 alpha,尺度参数为 beta。

7

Python `random.gauss(mu,std)` 函数

此函数返回一个服从**高斯分布**的随机变量,均值为 "mu",标准差为 "std"。

8

Python `random.lognormvariate(mu,std)` 函数

此函数返回一个服从**对数正态分布**的随机变量,均值为 "mu",标准差为 "std"。

9

Python `random.normalvariate(mu,std)` 函数

此函数返回一个服从**正态分布**的随机变量,均值为 "mu",标准差为 "std"。

10

Python `random.vonmisesvariate(mu,kappa)` 函数

此函数返回一个服从**冯·米塞斯分布**的随机变量,均角为 mu,集中参数 kappa 度量分布的离散程度。

11

Python `random.paretovariate(alpha)` 函数

此函数返回一个服从**帕累托分布**的随机变量,形状参数为 alpha。

12

Python `random.weibullvariate(alpha, beta)` 函数

此函数返回一个服从**威布尔分布**的随机变量,形状参数为 alpha,尺度参数为 beta。

字节函数

以下是专门用于处理字节的函数:

序号 函数及描述
1

Python `random.randbytes(a)` 函数

此函数用于生成随机字节。

备选生成器函数

以下是专门用于备选生成器的函数:

序号 函数及描述
1

Python `random.seed([x])` 函数

此函数初始化随机数生成器的内部状态。

2

Python `random.getstate()` 函数

此函数返回生成器的内部状态。

3

Python `random.setstate()` 函数

此函数设置随机数生成器的内部状态。

广告