【发布时间】:2021-04-25 16:48:47
【问题描述】:
我正在运行一段简单的代码来返回batch0 和2**63 之间的整数个数(无需替换)。
from random import sample
batch = 1000
n = 63
rand_nos = sample(range(2**n), batch)
我得到了错误
Python int too large to convert to C ssize_t
我认为这与 random.sample 函数在内部将范围的长度转换为 int 值有关。但是我找不到任何可以设置的参数,以要求函数使用更大范围的数据类型。我该怎么办?谢谢。
【问题讨论】:
-
那些是相当大的随机数。你用它们做什么?
-
我宁愿相信由 numpy 引起的异常
-
@MitchWheat 我正在研究编码理论并且必须处理大型代码。这是我正在处理的代码的维度。
-
len(range(2**63))可以转载 -
@learner,检查
range()中的docs:“允许包含大于sys.maxsize的绝对值的范围,但某些功能(例如len())可能会引发OverflowError。”
标签: python python-3.x random sample integer-overflow