一尘不染

更好的随机算法?

algorithm

我正在用C ++制作游戏,它涉及使用随机布尔值(是或否)填充图块,是否是由决定rand() % 1。感觉不是很随意。

我使用的是srandctime在启动时,但它似乎是相同的模式都上来了。

是否有任何算法会产生非常随机的数字?或关于如何改善的任何建议rand()


阅读 213

收藏
2020-07-28

共1个答案

一尘不染

真正的随机性似乎并不十分随机。不要期望看到奇怪的运行。

但是您至少可以做的一件事是避免只使用最低位。在C中引用数字配方:

如果要生成一个介于1到10之间的随机整数,则应始终使用高阶位来执行此操作,如下所示:

j = 1 + (int) (10.0 * (rand() / (RAND_MAX + 1.0)));

从来没有类似的东西

j = 1 + (rand() % 10);

(使用低阶位)。

此外,您可能会考虑使用具有更好属性的其他RNG。该Xorshift算法是一个不错的选择。它仅需几行C就可以快速紧凑地实现,并且从统计上来说,几乎可以满足任何游戏的需求。

2020-07-28