首页 > 解决方案 > 用python生成大量随机数

问题描述

我想生成随机数,均匀地介于 -1 和 1 之间。我知道使用 NumPy 并生成一个数字数组比在 for 循环中一个一个地生成要好得多。另一方面,我希望这些数字只对它们进行一次操作,因此没有理由将它们存储在数组中。我的问题是,最好的解决方案是什么,一方面使用 for 循环不省时,但我不存储不必要的数字,我一个一个生成它们然后我扔掉它们。另一方面,数组的内存效率不高,因为如果我想生成 10^10 个数字,我需要创建一个 10^10 大小的数组,结果很糟糕。我认为最好的选择是一个一个地生成小数组(10^3 或 10^4 元素),但我想知道是否有'

标签: python-3.xnumpyrandom

解决方案


正如@Carcigenicate 在评论中所说,您可以制作一个生成器,并将其与使用yield from 表达式生成整个数组的加速相结合。

这看起来像这样:

def random_numbers():
    while True:
        yield from np.random.random(1000) * 2 - 1

您可以将一次生成的值的数量调整为您需要的任何值,越大越快但使用更多内存


推荐阅读