C语言生成随机数,只需了解这3个函数
- rand函数。
- srand函数。
- time函数。
1.rand函数
使用rand函数需要包含stdlib.h头文件。rand函数的声明如下:
int rand(void);
很简单,rand函数会返回一个介于0~RAND_MAX的随机数。RAND_MAX是一个至少是32767的整数。
但是,使用rand函数前,需要先使用srand函数设置随机数种子,这样才能保证rand生成的数是随机的。
2.srand函数
srand函数的声明也在stdlib.h这个头文件中。声明如下:
void srand(unsigned int seed);
只需要传一个整数即可,就能设置随机数的种子了。注意:srand函数在整个程序运行期间只能被调用一次。
那么srand究竟需要传什么数呢?这就需要学习time函数了。
3.time函数
time函数的声明在time.h这个头文件中。声明如下:
time_t time(time_t* timer);
我们并不关心这个参数是什么意思,传一个NULL指针就行了。time函数会返回一个时间戳,这个时间戳是一个time_t类型的整数,这个数刚好可以作为srand函数的参数来设置随机数的种子。由于类型并不匹配,所以需要强制类型转换。
其实说了这么多,都是理论。下面看一个例子就懂了。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>int main()
{srand((unsigned int)time(NULL));// 生成10个随机数for (int i = 0; i < 10; ++i){int randNum = rand();printf("%d ", randNum);}return 0;
}
srand函数和time函数配合使用,设置随机数的种子。接下来就可以使用rand函数生成随机数了。
输出结果:
第一次运行:
第二次运行:
第三次运行:
注意到,由于我三次运行的时间间隔很短,srand和time函数设置的随机数种子是很接近的,所以运行结果还是有一些规律。如果想生成更加随机的数,需要调用一些第三方库,或者使用一些更高级的随机数算法。不过这篇文章讲解的方法,对于绝大多数初学者遇到的情况都够用了。
总结
生成随机数的步骤:
- 先使用srand函数和time函数设置随机数种子,具体的用法是:
srand((unsigned int)time(NULL));
注意这一行代码在整个程序运行期间只能执行一次。 - 接着调用rand函数,rand函数会返回一个介于0~RAND_MAX的随机数。
感谢大家的阅读!