srand()函数用于初始化随机种子,rand()函数用于产生随机数。
rand()函数的用法:
需要的头文件:#include <stdlib.h>
定义函数 :int rand(void)
rand的内部实现是用线性同余法做的,他不是真的随机数,只不过是因为其周期特别长,所以有一定的范围里可看成是随机的,rand()会返回一随机数值,范围在0至RAND_MAX 间。在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。rand()产生的是假随机数字,每次执行时是相同的。若要不同,每次用srand()生成不同的随机数种子。
返回0至RAND_MAX之间的随机整数值,RAND_MAX的范围最少是在32767之间(int),即双字节(16位数)。若用unsigned int 双字节是65535,四字节是4294967295的整数范围。0~RAND_MAX每个数字被选中的机率是相同的。
常见用法:
如使用rand()函数产生1-100以内的随机整数:int number1 = rand()%100;
srand()函数的用法:
需要的文件:#include <stdlib.h>
定义函数:void srand (unsigned int seed);
srand()用来设置rand()产生随机数时的随机数种子。参数seed必须是个整数,如果每次seed都设相同值,rand()所产生的随机数值每次就会一样。我们如何才能产生不可预见的随机序列呢?
常见的用法:
srand((unsign)time(NULL或0));//利用time函数返回的时间作为参数seed,这样srand产生的随机数种子就会不断变化
int number1 = rand()%100;//这样我们每次就会得到不同的随机数,%后的数字可以限定随机数的范围
sleep(1);//如果上面3条语句都在循环中,sleep几秒适当加大时间间隔可以使随机数更加随机
注意:
time()函数需要使用头文件:#include <time.h>
Sleep()\sleep()函数的用法:
执行进程挂起一段时间,也就是进程等待一段时间在继续执行。
linux中:unsigned int sleep(unsigned int seconds)
windows中:void Sleep(DWORD dwMilliseconds)
需要的头文件:Windows下为:#include <windows.h> Linux 下为:#include <unistd.h>
注意:windows中为Sleep()函数(S大写),linux中为sleep()函数(S小写)。
Sleep()/sleep()函数括号里的时间,在windows下是以毫秒为单位,而Linux是以秒为单位。
如果想在Linux下也用微秒为单位挂起,可以使用线程休眠函数:void usleep(unsigned long usec)。
使用的时候需要声明头文件:#include <system.h>