繁体   English   中英

Rand() 在 C 中总是给出相同的数字

[英]Rand() always give the same number in C

我是 C 的新手,我正在制作一个简单的代码来获取随机数。 我尝试或多或少地制作游戏(随机数字和玩家写一个数字)但是当我在终端中启动代码时,我总是得到相同的数字。 这正常吗? 如果没有,我该如何修复它?

#include <stdio.h>
#include <stdlib.h>
int main() {
    int essais = 10;
    int secret;
    int number;
    int win = 0;
    secret = rand()%100;
    while (essais > 0 && win != 1){
        printf("Quel est le nombre secret ? \n");
        scanf("%d",&number);
        if (number == secret){
            printf("Gagné !\n");
            win++;
        }
        else if (number < secret) {
            printf("Non c'est plus :/\n");
            essais--;
            printf("Il vous reste %d essais\n",essais);
        }
        else{
            printf("Non c'est moins :/\n");
            essais--;
            printf("Il vous reste %d essais\n",essais);
        }
        if (essais == 0)
            printf("Vous n'avez plus d'essais :(, vous aurez plus de chance la prochaine fois. Le nombre était %d",secret);
    }
}

PS:对不起,我是法国人,所以我用法语编写了代码和消息,但问题不在这里

是的, rand() 本身会重复它生成的数字,因此您需要使用它:

srand(time(0));  //use this line only once

//and then after that use the rand() function again

//You will also need to include time.h library above

你首先缺少种子,正如其他答案中所说,没有这个rand()每次都会生成相同的数字。

srand();

其次,当您仅生成一次随机数时,它当然会给您相同的数字

secret = rand()%100;

复制secret = rand()%100; 在某处的循环内,你会得到随机数,但你必须在循环之前有种子。

因此试试这个:

#include <stdio.h>
#include <stdlib.h>
int main() {
    srand(time(NULL));

    int essais = 10;
    int secret;
    int number;
    int win = 0;
    secret = rand()%100;

    while (essais > 0 && win != 1){
        printf("Quel est le nombre secret ? \n");
        scanf("%d",&number);
        if (number == secret){
            printf("Gagné !\n");
            
            win++;
        }
        else if (number < secret) {
            printf("Non c'est plus :/\n");
            essais--;
            printf("Il vous reste %d essais\n",essais);
        }
        else{
            printf("Non c'est moins :/\n");
            essais--;
            printf("Il vous reste %d essais\n",essais);
        }
        if (essais == 0)
            printf("Vous n'avez plus d'essais :(, vous aurez plus de chance la prochaine fois. Le nombre était %d",secret);
    }
}

还有一件事,bitte,s'il te plaît,我不懂你的语言,所以请把评论放在变量和printf语句旁边。

非常感谢:这真的帮助了我。)所以再次感谢,当然,我会翻译我所说的,但它是基本的

#include <stdio.h>
#include <stdlib.h>
int main() {
    srand(time(NULL));

    int essais = 10; // tries
    int secret;
    int number;
    int win = 0;
    secret = rand()%100;

    while (essais > 0 && win != 1){
        printf("Quel est le nombre secret ? \n"); // what is the secret number ?
        scanf("%d",&number);
        if (number == secret){
            printf("Gagné !\n"); // won
            secret = rand()%100;
            win++;
        }
        else if (number < secret) {
            printf("Non c'est plus :/\n"); // No, that's more
            essais--;
            printf("Il vous reste %d essais\n",essais); // You have ... tries left
        }
        else{
            printf("Non c'est moins :/\n"); // No that's less
            essais--;
            printf("Il vous reste %d essais\n",essais);
        }
        if (essais == 0)
            printf("Vous n'avez plus d'essais :(, vous aurez plus de chance la prochaine fois. Le nombre était %d",secret); // You don't have tries anymore, better luck next time
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM