我的伪随机数生成器有什么问题?

时间:2021-04-22 19:28:10

标签: c random

我的随机数生成器有问题。我的程序的工作原理是给玩家一组忍者,每个忍者都有一个隐身分数。要进步,忍者需要通过“隐身检查”。他们的传球方式是 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;
}

1 个答案:

答案 0 :(得分:2)

在将 student[i].stealth 用于模数之前,先将其加 1。