1.随机数的生成
1.1 rand
- int rand (); ----头文件 <stdlib.h>
伪随机数,每次生成的随机数一样,因为rand函数默认的种子是1.
#include<stdlib.h>
int main()
{
printf("%d\n",rand());
printf("%d\n",rand());
}
输出两个随机数,但每次随机数一样。
1.2 srand
srand 初始化随机数的生成器,原型:
viod srand (unsigned int seed);
程序在调用rand函数之前先调用srand函数,通过srand函数的参数seed来设置rand生成随机数种子,只要种子变化,每次的随机数就变化了。
#include<stdlib.h>
int main()
{
srand(2);
printf("%d\n",rand());
printf("%d\n",rand());
}
输出两个与1.1不一样的随机数,但每次随机数一样。
但是,需要srand(n)中的n变化,否则每次随机数一样。
那么,我们就需要一个变化的值。
1.3 time
- time():会返回当前的日历时间,返回类型是 time_t 类型,本质上返回的就是整数类型。头文件:<time.h>
#include<stdlib.h>
#include<time.h>
int main()
{
srand((unsigned int)time(NULL));
//因为srand返回类型是unsigned int 而time返回time_t,强制转换
printf("%d\n",rand());
printf("%d\n",rand());
}
输出结果:每次都是不同的两个随机数
sranda((unsigned int)time(NULL)); 设置一次即可。
1.4设置随机数范围
随机数范围:0~32767
- 如果要生成0~99之间随机数:
rand() % 100;//余数范围是0-99
- 如果要生成1~100之间随机数:
rand() % 100+1; //余数范围是0-99的数字+1
- 如果要生成100~200的随机数:
100 + rand() % (200-100+1);//余数范围是0-100,+100
- 要生成a~b的随机数:
a + rand() % (b-a+1)