目录
在编写猜数字,投色子等小程序时,需要使用到一定范围内的随机数,此时我们需要使用到一些函数帮助实现此类功能。
一,rand函数
#include<stdlib.h>
int rand( void );
rand函数根据种子生成随机值,但是每次程序运行种子是固定的,如果只使用它实际上返回的是伪随机整数。
想要返回真随机整数。在调用rand之前,要先使用srand函数为伪随机数发生器设定种子。
二,srand函数
#include<stdlib.h>
void srand( unsigned int seed );
通过函数原型可以发现,srand需要一个无符号整形的一个参数,根据种子参数为rand提供种子,但如果srand每次传入的种子相同的话,那么rand函数生成的随机值也是相同的,这样生成的数仍然不是完全随机的。
这时我们仍需要一个提供随机种子的函数,通常使用时间作为参数生成的种子,因为每次运行程序的时间不相同,所以生成的随机数也不相同。
三,time函数
#include<time.h>
time_t time(time_t *timer);
对于time函数来说,如果参数是空指针,直接返回当前时间。如果参数不是空指针,返回当前时间的同时,将返回值赋予t指向的内存空间。
我们只需要给time函数传空指针NULL,他会给我们返回当前时间的时间戳。这样的话就可以实现时间种子生成随机数。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
srand((unsigned int)time(NULL));
int ret = rand();
printf("%d\n", ret);
return 0;
}
四、生成范围随机数公式
通过公式实现生成一定范围内的随机数
srand((unsigned int)time(NULL));
int ret1 = rand() % 10 + 1;//生成1~10的随机数
int ret2 = rand() % 100 + 1;//生成1~100的随机数
int ret3 = rand() % 34 + 66;//生成66~99的随机数
int ret4 = rand() % (n - m + 1) + m;//生成m~n的随机数