Boo*_*jum 23
真正的随机性通常似乎不是随机的.期待看到奇怪的运行.
但至少可以做的一件事就是避免使用最低位.在C中引用数字食谱:
如果要生成1到10之间的随机整数,则应始终使用高位来执行此操作,如
j = 1 + (int) (10.0 * (rand() / (RAND_MAX + 1.0)));
Run Code Online (Sandbox Code Playgroud)
从来没有任何类似的东西
j = 1 + (rand() % 10);
Run Code Online (Sandbox Code Playgroud)
(使用低位比特).
此外,您可以考虑使用具有更好属性的不同RNG.该Xorshift算法是一个不错的选择.只需几行C就可以快速而紧凑,对于几乎任何游戏来说都应该足够统计.
低阶位不是非常随机的.
通过使用%2,您只检查随机数的底部位.
假设你不需要加密强度随机性.
那么以下应该没问题.
bool tile = rand() > (RAND_MAX / 2);
Run Code Online (Sandbox Code Playgroud)