gpt4 book ai didi

python - 我可以为 numpy 预先计算/预先生成伪随机数吗?

转载 作者:行者123 更新时间:2023-12-04 02:34:09 31 4
gpt4 key购买 nike

我不认为我是第一个提出这个有点非正统想法的人,但我似乎无法让谷歌显示我为什么它不好,也不知道如何正确地做。

我有一段受 CPU 限制的代码,第二昂贵的函数是 np.randint(...),它被调用用于单个数字(一次一个)。我对程序的多次执行之间的“真正”随机性没有硬性要求。因此,我认为预先计算/缓存一大堆(约 200 万)随机数,将它们保存在某处,然后让 numpy 根据需要提供这些数字而不是运行 rng 可能是明智的做法。

有人能告诉我为什么这是个坏主意,或者如何去做吗?谢谢!

最佳答案

这是否是一个坏主意实际上取决于您的应用程序(关于随机性)。然而,生成 200 万个随机数并不昂贵:

numbers = np.random.randint(..., size=2_000_000)

这在我的机器上大约需要 40 毫秒。相反,从文件加载可能会导致执行时间更长(取决于您的文件系统及其繁忙程度)。

因此,预先计算所有随机数然后一次获取一个似乎是一个不错的改进(事实上,调用 np.random.randint 两百万次需要大约 500 倍的时间)。例如:

numbers = iter(np.random.randint(..., size=2_000_000))
single_number = next(numbers)

如果您不能预先计算所有数字(可能是因为您的边界动态变化),那么您可以使用 random.randint哪个应该更快。然后从一次运行中保存随机数并在下一次运行中重复使用它们可能是一回事。

numbers = []
numbers.append(math.randint(...)) # dynamically generate the random numbers

np.save('numbers.npy', numbers) # eventually save the numbers

然后在下一次运行中,为了确保一定程度的变化,您可以在加载这些数字后对其进行洗牌:

numbers = np.load('numbers.npy')
np.random.shuffle(numbers)

关于python - 我可以为 numpy 预先计算/预先生成伪随机数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62680331/

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