在正文开始之前,我们需要说明一件事情,在我们使用函数生成的随机数都不是真正的随机数,准确的叫法应该是伪随机数。
在 C 语言当中使用随机数要用到 rand 函数和 srand 函数。
void srand(unsigned int seed):返回值为空, 就是设置随机种子的,当我们不设置随机种子的时候,默认设置的种子为 1,也就是srand(1)。
举个例子:
#include<stdlib.h>//得引入 stdlib.h 这个头文件 int main() { srand(3); int rand_num = rand(); printf("rand_num = %d\n", rand_num); srand(5); rand_num = rand(); printf("rand_num = %d\n", rand_num); return 0; }
在这里,我们通过设置不同的种子达成产生随机数的效果。但是,通过固定的设置种子,显然不是个好方法,因此我们在实际的使用过程中通常都会利用当前的时间作为种子,它的使用是这样的:
#include<time.h> //使用 time 函数必须引入 time.h 头文件 #include<stdlib.h> int main() { srand((int)time(0)); int rand_num = rand(); printf("rand_num = %d\n", rand_num); return 0; }
通过上面的方法我们已经可以容易地获得随机数了,但是在有些时候,我们会使用到某个范围内的数,比如想要生成1-10的随机数,这时候我们又该怎么做呢?我们看下面的例子:
#include<time.h> #include<stdlib.h> int main() { srand((int)time(0)); while (1) { printf("rand_num = %d\n", rand() % 10 + 1); getchar(); } system("pause"); return 0; }
我们使用上面的例子可以生成1-10的例子,总结下就是当我们需要生成a-b的随机数的时候,我们可以使用rand()%(b-a+1)+a即可。