Theory: Random module(理论:随机模块)

有时会发生我们缺乏数据并且需要相当快地组成一堆新示例的情况。当然,您可以花一些时间自己编写这些示例,但效率不高,对吧?将责任转移到您的计算机上会更有意义,即 Python 的内置模块random在这个模块中,随机搜索用于生成元素,并使用以种子为起点的算法执行。因此,给出的结果根本不是随机的,从技术上讲,这个模块应该被称为pseudo-random。然而,它可能对大量应用有用,例如建模和仿真。

随机方法:第一步

首先,我们需要导入模块:

import random

在我们设法完成上一个任务之后,可以尝试random.random()为我们提供从 0 到 1 的伪随机数的函数:

print(random.random())  # 0.5557276751294531

我们还可以通过手动指定种子来控制伪随机行为,即使用该random.seed(x)函数配置新的伪随机数序列。您可以设置自己的数字或省略可选参数 x,因此默认情况下将使用当前系统时间。

random.seed()
print(random.random())  # 0.956177930864557

现在尝试设置x参数。你没有注意到结果的变化吗?如果你选择5, 你会得到 0.6229016948897019 结果,如果 20 – 0.9056396761745207等。因此,种子控制 Python 中伪随机的行为,并且可以与随机模块的任何其他功能一起使用。

随机基本函数

展望未来,其他有用的功能是:

  • random.uniform(a, b) – 返回一个介于 a 和 b 之间的伪随机浮点数:
print(random.uniform(3, 100))  # 35.94079523197162
  • random.randint(a, b)返回一个介于 a 和 b 之间的伪随机整数:
print(random.randint(35, 53))  # 52
  • random.choice(seq)–从非空序列返回伪随机元素:
print(random.choice('Voldemort'))  # m
  • random.randrange(a, b, c)从 a 和 b 之间的范围内返回一个伪随机数,步长为 c。就像range()函数一样,可以分别使用默认值 0 和 1 省略startstep参数。这意味着该函数可以采用一个、两个或三个参数:
print(random.randrange(3, 100, 5))  # 18
print(random.randrange(1, 5))       # 2
print(random.randrange(100))        # 44
  • random.shuffle(seq)– 打乱一个序列。注意:它不适用于不可变数据类型!
tiny_list = ['a', 'apple', 'b', 'banana', 'c', 'cat']
random.shuffle(tiny_list)
print(tiny_list)  # ['apple', 'banana', 'a', 'cat', 'b', 'c']
  • random.sample(population, k)– 从种群序列中返回一个伪随机 k 长度列表。该函数用于无放回随机抽样:
print(random.sample(range(100), 3))  # [24, 33, 91]

此外,还有许多其他函数用于常见的数学实践,例如random.gammavariate(alpha, beta) 用于伽马分布或random.gauss(mu, sigma) 返回高斯分布的函数。如果您需要这种狭义的功能,您可以参考Python 文档

random模块的伪随机生成器应用于安全目的。如果您打算使用密码、安全令牌和其他敏感数据,请查看secrets模块。它被认为更可靠,因为它会生成安全的随机数。

概括

总而言之,在本主题中,我们仔细研究random了 Python 标准库中的模块及其基本功能。现在您可以自己在项目中使用它!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值