我正在用C ++制作游戏,它涉及使用随机布尔值(是或否)填充图块,是否是由决定rand() % 1。感觉不是很随意。
rand() % 1
我使用的是srand与ctime在启动时,但它似乎是相同的模式都上来了。
srand
ctime
是否有任何算法会产生非常随机的数字?或关于如何改善的任何建议rand()?
rand()
真正的随机性似乎并不十分随机。不要期望看到奇怪的运行。
但是您至少可以做的一件事是避免只使用最低位。在C中引用数字配方:
如果要生成一个介于1到10之间的随机整数,则应始终使用高阶位来执行此操作,如下所示:
j = 1 + (int) (10.0 * (rand() / (RAND_MAX + 1.0)));
从来没有类似的东西
j = 1 + (rand() % 10);
(使用低阶位)。
此外,您可能会考虑使用具有更好属性的其他RNG。该Xorshift算法是一个不错的选择。它仅需几行C就可以快速紧凑地实现,并且从统计上来说,几乎可以满足任何游戏的需求。