C语言 问题:srand((unsigned)time(NULL));

#include<stdio.h>#include<stdlib.h>#include<time.h>#defineMAX_NUMBER100intsecret_numb... #include<stdio.h>
#include<stdlib.h>
#include<time.h>

#define MAX_NUMBER 100

int secret_number;

void initialize_number_generator(void);
void choose_new_secret_number(void);
void read_guesses(void);

main()
{
char command;

printf ("Guess the secret number between 1 and %d.\n\n",MAX_NUMBER);
initialize_number_generator();
do
{
choose_new_secret_number();
printf("A new number has been chosen.\n");
read_guesses();
printf("Play again? (Y/N)");
scanf (" %c",&command);
printf("\n");
}while(command == 'y' || command == 'Y');
return 0;
}

void initialize_number_generator(void)
{
srand((unsigned)time(NULL));//这句话的意义 与作用 ? 没有这句话程序会受和影响?
}

void choose_new_secret_number(void)
{
secret_number = rand()% MAX_NUMBER + 1;
}

void read_guesses (void)
{
int guess, num_guesses = 0;

for(;;)
{
num_guesses++;
printf("Enter guess:");
scanf ("%d", &guess);
if(guess == secret_number)
{
printf("You won in %d guesses!\n\n", num_guesses);
return;
}
else if (guess < secret_number)
printf("Too low; try again.\n");
else
printf("Too high; try again.\n");
}
}
展开
 我来答
yangtou880
2012-01-05
知道答主
回答量:16
采纳率:0%
帮助的人:5万
展开全部
srand((unsigned int)time(0))
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
luo6620378xu
推荐于2016-09-21 · TA获得超过906个赞
知道小有建树答主
回答量:301
采纳率:0%
帮助的人:271万
展开全部
我们知道在产生随机数的时候,需要一个叫做种子seed的值作为产生随机数算法的初始值。
而C/C++库中的srand就是为这一次的随机数生成设置种子。s代表的就是seed的意思。
time_t time(time_t *time);该函数返回自计算机计时的某个时刻起到现在所过去的秒数。
一般是返回自1970年1月1日00:00:00以来,到调用函数的时刻所累积的秒数。

所以综上所述:
srand((unsigned)time(NULL));
这语句的含义就是以自1970年1月1日00:00:00以来,到调用函数的时刻所累积的秒数作为
产生随机数算法的种子seed。

没有语句会对程序产生什么影响:
如果在程序运行时没有自主设置种子的话,用函数rand产生的随机数序列会是一样的。
而用srand设置随机数种子后,可能产生不同的随机序列(概率很大)。

之所以说以很大的概率产生不同的随机数序列,是因为从上面的解释可以看到,
srand是以秒数为单位的。一旦程序多次运行的时间间隔少于1s。那么srand设置种子也没有什么用处。所以库函数产生随机数有一定的缺陷。不知道我解释明白了没有!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式