gpt4 book ai didi

python - 为什么 random.random() 占用两个 random.randint() 值?

转载 作者:太空狗 更新时间:2023-10-30 00:18:40 26 4
gpt4 key购买 nike

我开发了一个简单的应用程序来生成测试数据系列,并且我使用随机种子将其构建为能够重复。我注意到以下情况并想知道为什么会这样:

>>> random.seed(1)
>>> [random.randint(0,10) for _ in range(0,10)]
[2, 9, 1, 4, 1, 7, 7, 7, 10, 6]
>>> random.seed(1)
>>> random.random()
0.13436424411240122
>>> [random.randint(0,10) for _ in range(0,10)]
[1, 4, 1, 7, 7, 7, 10, 6, 3, 1]

请注意对 random() 的单次调用如何使用 randint() 的两个值。我猜这与在给定范围内生成 float 与生成整数所需的随机信息量有关,但是是否有某种方法可以跟踪“到目前为止已使用了多少随机值?” ,即系统在半随机值序列中有多远?

我最终编写了自己的函数,始终在其逻辑中使用对 random.random() 的单个调用。所以我不是在寻求解决方案,只是一些背景/解释。

最佳答案

您的猜测是准确的,至少对于最新版本的 CPython 而言是这样。在随机模块的代码中有几个相关的地方,您可以在其中了解为什么会发生这种情况。我认为所有这些都是实现细节,但您可以看到,本质上,根据需要生成 32 个随机位组以获得随机数。因此,获取 53 个随机位(表示 double 的小数部分)使用的随机位是获取 4 个随机位的两倍。

关于能够判断生成了多少随机数据,所提供的函数似乎并没有为您提供一种简单可靠的方法。

关于python - 为什么 random.random() 占用两个 random.randint() 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48739457/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com