1、rand()生成随机数:
- rand():产生一个随机数,返回介于0和之间的伪随机整数RAND_MAX(32767).
- rand() 函数虽然可以产生一个随机数,但这不是真正意义的随机数,是一个伪随机数,
所谓的“伪随机数”指的并不是假的随机数,是通过一定的算法得到一种假想状态的随机数,计算机只能生成相对的随机数,而这些随机数既是随机的又是有规律的,一部分遵守一定规律,一部分则不遵守任何规律
- rand()函数在使用的时候需调用srand(seed)函数,也就是提供一个种子,使用如果没用调用srand(),那么系统就会自动给seed赋值,即srand(1)。
- 在调用rand()和srand()的时候需要引入<stdlib.h>头文件
2、rand()生成一点范围的随机数
在实际开发,我们往往需要的是一定范围内的随机数,那么我们常用的方法就是取余运算,在进行一个加法运算。
- 想要产生一个0-99的随机数,那么用法如下:
int num = rand() % 100;
- 想要产生一个1-100之间的随机数,用法如下:
int num = rand() % 100 +1
- 想如果我们像产生一个80-120的随机数
int num = rand() % 41 +80
//用代码演示一下
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
int main(){
for (int i = 0; i < 20; i++){
int num = rand() % 41 + 80;
printf("%d\t",num);
}
system("pause");
return 0;
}
//运行结果为
80 97 100 94 102 101 119 82 105 108 86 99 114 97 119
120 82 91 110 104 请按任意键继续. . .
3 srand()函数
- srand()函数需要的头文件仍然是:<stdlib.h>
- srand()函数原型:void srand (usigned int seed);
- srand ()函数是初始化随机数生成器。伪随机数生成器使用作为seed传递的参数进行初始化。
如果使用相同的种子,rand()函数后面还会出现一样的随机数,上面我们提到默认的srand(1),直接使用1来初始化种子,得到的随机数还是伪随机。
- 在实际开发中,我们可以用时间作为参数,只要每次播种的时间不同,那么生成的种子就不同,最终的随机数也就不同,通常我们采用
<time.h> 头文件中的 time 函数即可得到一个精确到秒的时间作为种子。
//我们在代码中实现随机数结果
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<windows.h>
#include<time.h>
#include<stdlib.h>
int main(){
srand(time(0));
for (int i = 0; i < 20; i++){
int num = rand() % 41 + 80;
printf("%d\t",num);
}
system("pause");
return 0;
}
- 第一次运行结果
103 95 113 118 89 91 83 92 99 92 117 97 91 82 97
91 83 89 91 109 请按任意键继续. . .
- 第二次运行结果
81 80 85 84 114 96 110 107 102 83 83 109 113 96 90
82 105 102 81 114 请按任意键继续. . .