我正在用 C++ 制作一个游戏,它涉及用随机 bool 值(是或否)填充方 block ,是否是由 rand() % 1
决定。感觉不是很随意。
我在启动时将 srand
与 ctime
一起使用,但似乎出现了相同的模式。
是否有任何算法可以创建非常随机的数字?或者关于如何改进 rand()
的任何建议?
最佳答案
真正的随机性通常看起来并不是很随机。不要期望看到奇怪的运行。
但至少您可以立即做的一件事是避免只使用最低位。在 C 中引用数字食谱:
If you want to generate a random integer between 1 and 10, you should always do it by using high-order bits, as in
j = 1 + (int) (10.0 * (rand() / (RAND_MAX + 1.0)));
and never by anything resembling
j = 1 + (rand() % 10);
(which uses lower-order bits).
此外,您可以考虑使用具有更好属性的不同 RNG。 Xorshift算法是一个不错的选择。它仅需几行 C 代码即可快速且紧凑,并且在统计上应该足以满足几乎所有游戏的需求。
关于c++ - 更好的随机算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1912199/