一、关于随机数函数rand()和srand()
1.rand()和srand()
1) 首先给srand()提供一个种子(即可看作通过srand()将rand()初始化,但每次初始化的值是不同的,这样就能得到新的随机数序列。而由此,我们易知这个“种子”本身应该是具有变化性的,所以在后文我们用到了time这个变化的量作为“种子”),它是一个unsigned int类型,其取值范围从0~65535;
2) 然后调用rand(),它会根据提供给srand()的种子值返回一个随机数(0-RAND_MAX),范围为0~32767。RAND_MAX定义在stdlib.h(所以需要调用stdlib.h头文件)中。
3) 根据需要多次调用rand(),从而得到多个随机数;
2.time()
1)通常使用系统时间来进行初始化,即使用time()函数获取系统时间,它的返回值为time_t类型,要转换为unsigned int 类型之后再传给srand()函数。使用time()函数还需要调用“time.h”头文件。
2)P.s.:time(0)返回的是系统的时间 (从1970.1.1算起的秒数) ,可以使用当前时钟time(0)作为给srand() 的种子。(还有srand((unsigned)time(NULL))的写法也是一样的)
二、随机函数的引申用法
1)从0开始的随机数:eg:生成0~10的随机数,那我们可以利用rand()%10;来实现。
2)从i开始的随机数(i!=0):eg:生成10~255的随机数,那我们可以利用rand()%255+10;来实现。
下面附上一个例子:随机输出10个随机数:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main( )
{
int i;
srand(time(0)); //初始化随机数
for( i = 0; i < 10; i++ ) //打印出10个随机数
printf("%d\n", rand() );
return 0;
}
今天下午考c语言,考前写个文压压惊~