一、rand
1、头文件
每次调用时需要调用: <stdlib.h>
这里说明,调用rand函数时需要srand进行初始化!如若不进行初始化,会出现相同的随机数。
2、一般应用
一般应用:int rand (void); int—整型类型;void----不需传输参数
rand()不需要参数,它会返回一个从0到最大随机数-RAND_MAX(32767)的任意整数;
1.产生随机整数 int num = rand() % n +a;其中的a是起始值,n-1+a是终止值,n是整数的范围, rand() % n产生0~n-1的随机数,+a表示a到n-1+a,例如: 如果你要产生0~99的随机数字,可以表达为:int num = rand() %
100 即:num的值就是一个0~99中的一个随机数了; 如果要产生1~100,则是:int num = rand() % 100 +1,即可产生1-100的随机数。
2.产生随机小数 若要产生0至1之间的小数,则可以需先取得0至10的整数,然后除以10,即可得到10个随机小数; 若要得到“随机到百分位”的随机小数,则需要先得到0~100的整数,然后均除以100,其它情况依此类推。
例如:
int main ()
{
int i;
for (i = 0; i <= 10; i++)
{
printf(“%d “,rand() );
}
printf(”\n”);
return 0;
}每一次运行都会产生与第一次相同的随机数!
3、通常rand()产生的随机数在每次运行的时候都是与上一次相同的,如要产生每一次不同的随机数,就要借用time函数。
二、srand
1、头文件
每次调用时需要调用: <stdlib.h>,与rand相同
2、一般应用
void srand (unsigned int seed)
一般形式:无返回值,传入的参数是无符号整形种子(seed),下面是seed的解释
译文:由伪随机数生成器算法用作种子的整数值
int main ()
{
srand(1);
int i;
for (i = 0; i <= 10; i++)
{
printf("%d ", rand());
}
printf("\n");
return 0;
}
结果如下:
如将seed改为2,结果如下,但每次仍相同。
上述代码运行结果如上图,对于srand(seed)函数,seed的值直接决定随机数的产生结果;也就是如果seed的值确定,则随机数产生的值也就确定,由此可知如若想产生每次不同的结果就需要使得seed的值每次都不同,即借助time函数。
三、time
1、头文件
每次调用时需要调用: <time.h>
2.一般应用
time_t time (time_t* timer);
返回值一般是当前的时间戳
时间戳:可以当作此刻的时间,每秒都不同。时间戳转换网址
int main ()
{
srand((unsigned int)time(NULL));
int i;
for (i = 0; i <= 10; i++)
{
printf("%d ", rand());
}
printf("\n");
return 0;
}
运行结果:三次运行结果如下,可以看到每次都不同(只要运行间隔不少于一秒钟)。