用C语言编程,我正在尝试运行一个计算机生成1到100之间的数字的游戏。但是,我生成的数字一直是42 ......我的“rand()”出了什么问题
#include <stdlib.h>
#include <stdio.h>
int main (void)
{
int guess, tries = 6;
int number = 1+(rand()%100);
printf("Pick a number between 1 and 100:");
scanf_s("%d", &guess);
while(tries > 0 && guess != number)
{
if(guess > number)
printf("Too high");
else
printf("Too low");
puts(". Guess again:");
scanf_s("%d",&guess);
tries--;
}
if(guess == number)
puts("You win!");
else
puts("You lose");
}
经过下面的大量讨论,我在下面的代码行中添加了
#include <time.h>
和
srand ((unsigned int)time(NULL));
但代码无法在MS visual studio中运行,直到我用Google搜索错误,结果发现MSVS需要在每个函数/块的顶部声明变量。执行此操作后,代码工作正常。谢谢大家,对不起多次编辑感到抱歉。更正后的代码:
#include <time.h>
int main (void)
{
int guess, tries = 6, number;
srand ((unsigned int)time(NULL));
number = 1+(rand()%100);
其余的都是一样的。谢谢大家。
答案 0 :(得分:7)
使用time
使用当前时间对rand()
使用的伪随机数生成器进行播种。
srand(time(NULL));
在致电rand
答案 1 :(得分:6)
您需要使用初始化随机种子
srand (time(NULL));
为此,您还需要加入time.h
。
答案 2 :(得分:2)
尝试使用
srand ( (unsigned int)time(NULL) );
在main
的开头。
不要忘记包含
#include <ctime>
或
#include <time.h>
来自文档: -
为了生成类似随机数的数字,srand通常被初始化 一些独特的价值,如与执行时间相关的价值。 例如,函数时间返回的值(声明为 标题)每秒都不同,这是足够独特的 最随机的需求。
答案 3 :(得分:0)
#include <stdlib.h>
#include <stdio.h>
其中包含srand(time(NULL))函数的头文件
#include <time.h>
int main (void)
{
srand(time(NULL));
种子随机生成器
int guess, tries = 6;
int number = 1+(rand()%100);
printf("Pick a number between 1 and 100:");
scanf_s("%d", &guess);
while(tries > 0 && guess != number)
{
if(guess > number)
printf("Too high");
else
printf("Too low");
puts(". Guess again:");
scanf_s("%d",&guess);
tries--;
}
if(guess == number)
puts("You win!");
else
puts("You lose");
}