如何在Python中生成300,000,000个随机1和-1的累积和

问题描述 投票:0回答:1

我正在尝试找到一种有效的方法来在Python中生成300,000,000个随机1和-1的累积和。我已经能够使用下面的解决方案,n 最多约为 30,000,000。但如果我尝试更大的数字,我就会遇到内存问题。

def tosses(n):
    return np.cumsum(np.random.choice([-1,1],n))
python numpy memory random cumsum
1个回答
0
投票

您可以将数组分成更小的块。创建一个 for 循环,以

chunk_size
的步长从 0 迭代到 n。在此循环中,生成数组块如下:

chunk = np.random.choice([-1, 1], min(chunk_size, n - i))

然后,计算每个块的累积和 (cumsum) 并将结果添加到输出数组中。

这不是唯一的方法。您还可以使用内存映射文件来处理大型数组,而无需将它们完全加载到内存中。

© www.soinside.com 2019 - 2024. All rights reserved.