簡體   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