gpt4 book ai didi

Python 随机数生成器 numpy_rng.random_integers(1e10)) OverflowError

转载 作者:太空宇宙 更新时间:2023-11-04 00:50:14 25 4
gpt4 key购买 nike

我正在尝试通过以下代码行在 64 位 Windows 系统上的 Python 2.7 中生成随机数:

random_state=numpy_rng.random_integers(1e10)

但我收到以下错误。

OverflowError: Python int too large to convert to C long.

追溯如下 rand_num_generator = numpy.random.RandomState(random_state) 文件“mtrand.pyx”,第 618 行,位于 mtrand.RandomState.init (numpy\random\mtrand\mtrand.c:8275) 文件“mtrand.pyx”,第 654 行,位于 mtrand.RandomState.seed (numpy\random\mtrand\mtrand.c:8670)ValueError:种子必须介于 0 和 4294967295 之间

最佳答案

Python 中的最大整数是:

import sys

sys.maxint
Out[61]: 2147483647

或大约。 2.1e9。这是 Windows 的限制。来自 this帖子:

In their infinitive wisdom Microsoft has decided to make the 'long' C type always a 32 bit signed integer - even on 64bit systems.

因此,您不能将 random_integers 与超过该数字的参数一起使用。你可以改用这个技巧:

10 * np.random.random_integers(1e9) - np.random.choice(10)
Out[62]: 3910179327L

@2Cubed 与 randint(0, 1e10) 的方法也应该有效,因为通过 randint python 成功地将 int 转换为

关于Python 随机数生成器 numpy_rng.random_integers(1e10)) OverflowError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37473473/

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