📅  最后修改于: 2023-12-03 15:29:45.133000             🧑  作者: Mango
在C编程语言中,可以使用标准库中的 rand()
函数来生成伪随机数,但是它只能生成整数,我们需要通过一些技巧来获取随机的浮点数。
我们可以利用强制类型转换将随机生成的整数转换为浮点数。具体实现如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
srand(time(NULL));
int random_int = rand(); // 获取随机整数
float random_float = (float)random_int / RAND_MAX; // 随机整数转浮点数
printf("生成的随机浮点数为:%f\n", random_float);
return 0;
}
上述代码中,我们先通过 rand()
函数获取一个随机整数,然后将其转换为浮点数,并除以 RAND_MAX
(rand()
函数生成的最大整数值)来得到 0 到 1 之间的随机浮点数。
另一种方法是自定义生成随机浮点数的函数。具体实现如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
float random_float(float min, float max) {
float random = (float)rand() / (float)RAND_MAX;
return min + (random * (max - min));
}
int main() {
srand(time(NULL));
float random_number = random_float(0.0, 1.0);
printf("生成的随机浮点数为:%f\n", random_number);
return 0;
}
上述代码中,我们自定义了 random_float()
函数,该函数接收两个参数 min
和 max
,代表随机数的最小值和最大值。通过调用 rand()
函数得到一个 0 到 1 之间的随机数,再加上 min
乘以 max - min
(随机数的取值范围)即可得到所需的随机浮点数。
如果我们需要经常使用随机浮点数,我们可以将上述方法封装为库函数,方便重用。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
float random_float(float min, float max) {
float random = (float)rand() / (float)RAND_MAX;
return min + (random * (max - min));
}
上述代码中的 random_float()
函数即为所需的随机浮点数库函数。
#include <stdio.h>
#include "random_float.h"
int main() {
srand(time(NULL));
float random_number = random_float(0.0, 1.0);
printf("生成的随机浮点数为:%f\n", random_number);
return 0;
}
上述代码中,我们先导入 random_float.h
头文件,然后调用 random_float()
函数来生成随机浮点数。
通过以上三种方法,我们可以轻松的获取随机浮点数,实现代码的灵活多样。