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