如何优化多次 rand() 调用?

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

我有一个粒子模拟器,需要多次调用随机数,主要在0.0-1.0之间。它对生成的每个粒子都执行此操作,以便您可以看到它的累加。

我每次迭代计数不少于 60 个:

(double)(rand() % RAND_MAX) / (RAND_MAX)

它们用于许多特征,从颜色随机性到尺寸到速度到力等。

我的问题有两个:

1 - rand() 函数是否会对性能造成很大影响,或者每个粒子 60 个函数不值得担心?我可以轻松拥有 1000 个粒子,这相当于 60,000 次随机调用!

2 - 我知道我可以计算 5 个随机浮点数,并在 60 次调用中重复使用这些浮点数,但我担心这是一个坏主意,我会开始看到由于重复使用而导致的不一致。只计算一个并重用它可能是一个糟糕的主意,对吧?

还有其他更好的方法来优化吗?

谢谢, -理查德

c++ optimization random particle-system
1个回答
0
投票

这不是对您问题的回答,而是评论:即使是经验丰富的程序员也无法判断其代码的瓶颈在哪里,除非他们实际分析代码。这同样适用于你的问题:你想知道代码的一部分是否是性能问题,但你没有提供任何证据表明你已经测量了这部分,因此你很可能会浪费时间思考这个问题。

因此建议是:如果您的代码太慢,请使用分析器运行它,并查看生成随机数的调用是否出现在接近顶部的位置。如果他们这样做了,那么您就可以开始思考解决方案。如果他们不这样做,那么你就有几天时间去做其他事情了!

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