📜  c++ 随机浮点数 - C++ (1)

📅  最后修改于: 2023-12-03 15:29:53.169000             🧑  作者: Mango

C++ 随机浮点数

在 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_boundupper_bound 分别表示范围的下界和上界。需要注意的是,在每次调用 random() 函数时都需要使用 srand() 函数来重新初始化随机数种子,否则每次生成的随机数都一样。