C语言编程中如何使用rand()函数生成随机数及其应用
C语言:生成随机数

在实际编程中,我们经常需要生成随机数。 1.rand()函数
在C语言中,我们一般使用头文件中的rand()函数来生成随机数。它的用法是:
int 兰特(无效);
rand() 将随机生成一个 0 ~ RAND_MAX 之间的整数。
RAND_MAX是头文件中的宏,用于指定rand()可以返回的最大随机数。 C语言标准并没有规定RAND_MAX的具体值,只是规定其值至少为32767。在实际编程中,我们不需要知道RAND_MAX的具体值,我们只需将其视为一个大数即可。
多运行几次你会发现每次生成的随机数都是一样的。
事实上,rand()函数生成的随机数是伪随机数,是根据某个数值按照一定的公式计算出来的。该数值称为“种子”。种子和随机数之间的关系是正态分布的。
每次计算机启动时种子都是随机的,但计算机一旦启动就不会改变;也就是说,种子在计算机每次启动时都是固定值,因此根据公式计算出的结果(即生成的随机数)是固定的。
2.srand()函数
srand() 函数用于设置 rand() 函数的种子。 srand()的用法是:
void srand(无符号整型种子);
它需要一个 unsigned int 类型的参数。在实际开发中,我们可以使用时间作为参数。只要每次播种的时间不同,生成的种子就会不同,最终的随机数也会不同。
使用头文件中的 time() 函数获取当前时间(精确到秒),如下所示:
srand((无符号)时间(NULL));
修改上面的代码,在生成随机数之前进行播种:
#include
#include
#include
int main() {
int a;
srand((unsigned)time(NULL));
a = rand();
printf("%d\n", a);
return 0;
}
如果多次运行该程序,你会发现每次生成的随机数都不一样。然而,这些随机数往往会逐渐增加或减少。这是因为我们以时间为种子,时间逐渐增加。结合上面的正态分布图,很容易推断出随机数也会逐渐增加。增加或减少。
3. 生成一定范围内的随机数
在实际开发中,我们经常需要一定范围内的随机数。太大或太小都不能满足要求。那么,如何生成一定范围内的随机数呢?我们可以使用取模方法:
int a = rand() % 10; //生成0到9的随机数。注意10可以整除
如果要指定上限和下限:
int a = rand() % 51 + 13; //生成13到63之间的随机数
分析:取模就是取余数。我们可以把rand()%51+13看成两部分:rand()%51是生成0~50的随机数,后面的+13保证a最小只能是13,最大是50 +13=63。
最后给出生成13~63范围内随机数的完整代码:
#include
#include
#include
int main(){
int a;
srand((unsigned)time(NULL));
a = rand() % 51 + 13;
printf("%d\n",a);
return 0;
}