📅  最后修改于: 2023-12-03 15:29:53.169000             🧑  作者: Mango
在 C++ 中,我们可以使用函数库 <stdlib.h>
中的函数 rand()
来生成伪随机数,而要生成随机浮点数,则需要一些额外的处理。
我们可以使用 rand()
函数来生成一个 0 到 RAND_MAX
(在头文件 <stdlib.h>
中定义)之间的伪随机整数。如要生成 1 到 100 之间的随机整数,我们可以使用如下代码:
#include <cstdlib>
int main() {
int random_number = rand() % 100 + 1; // 生成 [1, 100] 之间的随机整数
return 0;
}
其中,rand() % 100
会生成 0 到 99 之间的整数,再加上 1 即可得到 1 到 100 之间的整数。
如果要生成一个 0 到 1 之间的随机浮点数,我们可以使用以下代码:
#include <cstdlib>
#include <ctime>
int main() {
srand(time(0)); // 初始化随机数种子
double random_number = static_cast<double>(rand()) / RAND_MAX; // 生成 [0, 1] 之间的随机浮点数
return 0;
}
这里使用 srand()
函数来初始化随机数种子,可以保证每次程序运行时生成的随机数不同。同时,使用 static_cast
来将整数类型的随机数转换为浮点数类型,再除以 RAND_MAX
来得到 0 到 1 之间的随机浮点数。
如果要生成一个指定范围内的随机浮点数,我们可以使用以下代码:
#include <cstdlib>
#include <ctime>
double random(double lower_bound, double upper_bound) {
srand(time(0)); // 初始化随机数种子
return lower_bound + static_cast<double>(rand()) / (RAND_MAX / (upper_bound - lower_bound)); // 生成指定范围内的随机浮点数
}
int main() {
double random_number = random(1.0, 100.0); // 生成 [1.0, 100.0] 之间的随机浮点数
return 0;
}
这里使用了一个名为 random()
的函数来生成指定范围内的随机浮点数,其中 lower_bound
和 upper_bound
分别表示范围的下界和上界。需要注意的是,在每次调用 random()
函数时都需要使用 srand()
函数来重新初始化随机数种子,否则每次生成的随机数都一样。