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");
}
} 展开
#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");
}
} 展开
2个回答
展开全部
srand((unsigned int)time(0))
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我们知道在产生随机数的时候,需要一个叫做种子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设置种子也没有什么用处。所以库函数产生随机数有一定的缺陷。不知道我解释明白了没有!
而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设置种子也没有什么用处。所以库函数产生随机数有一定的缺陷。不知道我解释明白了没有!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询