计算机猜数字
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main ( )
{
srand ( time ( 0 ) ) ;
int number = rand ( ) % 100 + 1 ;
int count = 0 ;
int a= 0 ;
printf ( "我已经想好了一个1到100之间的数。\n" ) ;
do {
printf ( "请猜这个1到100之间的数:" ) ;
scanf ( "%d" , & a) ;
count++ ;
if ( a> number) {
printf ( "你猜的数大了" ) ;
}
else if ( a< number) {
printf ( "你猜的数小了" ) ;
}
} while ( a!= number) ;
printf ( "太好了,你用了%d次就猜到了答案\n" , count) ;
}
`
## 程序说明
这里的srand函数和time函数如下:
srand函数
srand函数是随机数发生器的初始化函数,原型:
void srand ( unsigned int seed) ;
这个函数需要提供一个种子,如srand(1 ),用1 来初始化种子
rand()产生随机数时,如果用srand(seed)播下种子之后,一旦种子相同(下面的getpid方法),产生的随机数将是相同的。当然很多时候刻意让rand()产生的随机数随机化,用时间作种子 srand(time(NULL )),这样每次运行程序的时间肯定是不相同的,产生的随机数肯定就不一样了。
我们常常使用系统时间来初始化,使用time函数来获取系统时间,得到的值是一个时间戳,即从1970 年1 月1 日0 点到现在时间的秒数,然后将得到的time_t类型数据转化为( unsigned int ) 的数,然后再传给srand函数,用法如下:
srand ( ( unsigned int ) time ( NULL ) ) ;
如果仍然觉得时间间隔太小,可以在( unsigned ) time ( 0 ) 或者( unsigned ) time ( NULL ) 后面乘上某个合适的整数。 例如, srand ( ( unsigned ) time ( NULL ) * 10 )
time的参数传NULL 表示不需要经过参数获得到的time_t数据,time函数原型如下
time_t time ( time_t * tloc) ;
还有另外一种初始化种子的方式如下,用进程的pid作为种子值seed,在同一个程序中,这样的种子的值是相同的
srand ( ( unsigned int ) getpid ( ) )
————————————————
版权声明:本文为CSDN博主「TLpigff」的原创文章,遵循 CC 4.0 BY- SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https: / / blog. csdn. net/ lvyibin890/ article/ details/ 80141412