什么是在C++游戏中使用的好的随机数生成器?
我的考虑因素如下:
- 需要大量的随机数,速度很重要。
- 玩家总会抱怨随机数,但我希望能够向他们指出一篇参考文章,解释我真的做到了我的工作。
- 由于这是一个商业项目,我没有太多时间,所以如果算法a)相对容易实现或b)有一个良好的非GPL实现,则非常好。
- 我已经在很多地方使用了
rand()
,因此任何其他生成器都必须足够好,才能证明所有需要的改变是值得的。
我对这个主题不太了解,所以我唯一想到的替代方案就是Mersenne Twister;它是否满足所有这些要求?还有更好的选择吗?
Mersenne Twister似乎是共识选择。但关于第4点呢?它真的比rand()
好那么多吗?
让我在第2点上更加明确:玩家无法通过知道随机数来作弊。我希望它足够随机,以至于人们(至少是那些了解随机性的人)无法抱怨它,但我不担心预测。
这就是为什么我将速度列为首要考虑因素。
:%s/rand/newrand/g
,它会将每个'rand'实例替换为您新函数的名称。更不用说大多数好的编辑器都内置了搜索/替换的方法。上次我检查过,甚至Windows记事本也有这个功能。如果该函数参数有所不同,您始终可以编写一个包装器来最小化您需要执行的重复编辑量。 - Braden Best#undef RAND_MAX
之后加上#define RAND_MAX [new max]
即可。 - Braden Best