为什么我这里用rand()得到的随机数是固定的41
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int n = rand()%100;
int a,max,count;
scanf("%d %d",&a,&max);
if(a == n){
printf("Bingo!\n");
}
else{
for(count = 1;count < max;count++){
if(a == n && count >= 1 && count <= 2){
printf("Lucky You!\n");
break;
}
else if(a == n && count > 2){
printf("Good Guess!\n");
break;
}
else if(a > n){
printf("Too big\n");
}
else{
printf("Too small\n");
}
scanf("%d",&a);
if(a < 0){
printf("Game Over");
break;
}
}
if(count == max){
printf("Game Over\n");
}
}
return 0;
}
程序main第一行开头加上
srand(time(0));
另外加上
#include <time.h>
其实这个好像每个人电脑上都是41。
【以下回答由 GPT 生成】
问题是由于没有设置随机数种子导致的。rand()函数是根据当前的随机数种子生成随机数的,如果没有设置种子,每次运行程序时,种子的默认值是相同的,因此生成的随机数也是固定的。
为了解决这个问题,可以使用srand()函数设置随机数种子。srand()函数需要一个参数,一般可以使用time(NULL)作为参数,它返回当前时间的秒数,保证每次运行程序时种子是不同的。修改程序如下所示:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
srand(time(NULL)); // 设置随机数种子
int n = rand() % 100;
int a, max;
scanf("%d %d", &a, &max);
// 程序的其他部分不变...
return 0;
}
这样修改之后,每次运行程序时生成的随机数就会是不同的了。
【相关推荐】