【发布时间】:2018-04-09 01:59:12
【问题描述】:
我正在制作一个简单的程序,该程序可用作具有随机生成数字的热/冷猜谜游戏(输入猜测,告诉您更高或更低,重复直到猜出正确的数字。)我遇到了一些障碍随机数生成,我可以创建的最佳解决方案是生成一个包含 1000 个随机数的数组。
第一次玩游戏使用数组生成的第一个随机数,但是,第一次游戏之后的任何时间都使用4040作为随机数,而不管可能的随机数范围如何(应该是1-100正常难度设置)。我尝试以多种方式诊断问题,但我相信这个问题太难解决了,因为我对编程的经验很少(我仍在学习我的第一门编程课程),所以任何帮助找出问题将不胜感激。
相关部分代码:
int main()
{
int randomArray[1000];
int randomNum;
int e=0; //element of each array
int input, score;
time_t t;
char level='n', mode;
//srand ( time(NULL) );
srand((unsigned) time(&t));
do
{
game();
}
while(level!='!');
return 0;
}
void game()
{
int randomArray[1000];
int randomNum;
int input;
char level;
printf("Chose difficulty (? for help, ! to quit): \n");
printf("Normal (N)\n");
printf("Medium (M)\n");
printf("Hard (H)\n");
printf("Impossible (I)\n");
scanf("%c", &level);
if(level=='N' || level=='n')
{
randomNum=rngNormal();
}
if(level=='M' || level=='m')
{
randomNum=rngMedium();
}
if(level=='H' || level=='h')
{
randomNum=rngHard();
}
if(level=='I' || level=='i')
{
randomNum=rngImpossible();
}
if(level=='?')
{
printf("Normal: generates random number from 1-100\nMedium: generates random number from 1-500\n");
printf("Hard generates random number from 1-1,000\nImpossible: generates random number from 1-32,767");
}
getche();
system("cls");
printf("RANDOM NUMBER: %d\n", randomNum);//added for testing purposes
input=load();
while(input!=randomNum)
{
compare(input, randomNum);
input=load();
}
compare(input, randomNum);
return 0;
}
int rngNormal()
{
int randomArray[1000];
int randomNum;
time_t t;
int e=0;
//generates random array
if(e==0)
{
for(int a=0; a<1000; a++)
{
randomArray[a]=rand()%100+1;
}
for(int x=0; x<1000; x++)//added for testing purposes
{
printf("%3d ", randomArray[x]);
}
}
randomNum=randomArray[e];
e++;
return randomNum;
}
【问题讨论】: