我的随机数生成器有问题。我的程序的工作原理是给玩家一组忍者,每个忍者都有一个隐身分数。要进步,忍者需要通过“隐身检查”。他们的传球方式是 RNG 将在 0 和忍者的隐身分数之间拉取任何整数。如果 RNG 拉到 0,他们将无法通过检查。问题是,一些忍者的潜行得分为 1。这导致他们总是无法通过检查。我单独对RNG进行隔离测试后,还是这样。我还注意到它似乎无法从隐身得分本身中拉出来。例如,隐身分数为 3 的忍者从不拉 3,只有 0、1 和 2。那么,我该如何解决这个 RNG?
int stealth_check(struct ninja student[4]){
int stealth_pass;
int i;
for(i = 0; i < 4; i++){
stealth_pass = rand() % student[i].stealth;
printf("%d\n\n", stealth_pass);
}
return 0;
}
答案 0 :(得分:2)
在将 student[i].stealth 用于模数之前,先将其加 1。