在C++中生成一个包含负范围的随机数

Generating a random number in C++ including a negative range

本文关键字:一个 包含负 范围 随机数 C++      更新时间:2023-10-16

我发现了很多关于如何在C++中生成一个介于1和10之间的随机数的帖子,但当包含负数时,我很难找到这样做的方法。我试图得到一个在[-1,1)范围内生成的随机数,但我找不到一个包含负数的好例子。

如果您谈论的是实数,请使用std::uniform_real_distribution:

std::default_random_engine generator(
        std::chrono::system_clock::now().time_since_epoch().count());
std::uniform_real_distribution<double> distribution(-1.0, 1.0);
std::cout << distribution(generator) << std::endl;

请确保包含<random>。这是一个活生生的例子。

如果你只限于rand(),这是你能做的最好的事情:

srand(static_cast<unsigned int>(time(NULL)));
double x = -1. + rand() / (RAND_MAX / 2.);
std::cout << x << std::endl;

请确保包含<cstdlib><stdlib.h>。这是另一个活生生的例子。但请注意,<random>标头比rand()更可取。请参阅此演示文稿了解为什么rand()被认为是有害的,以获取更多信息。