[英]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.