我发现了许多关于如何在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;
Run Code Online (Sandbox Code Playgroud)
一定要包括<random>.这是一个实例.
如果你受限于rand(),这是你能做的最好的事情:
srand(static_cast<unsigned int>(time(NULL)));
double x = -1. + rand() / (RAND_MAX / 2.);
std::cout << x << std::endl;
Run Code Online (Sandbox Code Playgroud)
一定要包括<cstdlib>或<stdlib.h>.这是另一个实例.但要注意,<random>标题首选rand().请参阅此演示文稿,了解为什么rand()被认为对更多信息有害.
| 归档时间: |
|
| 查看次数: |
1021 次 |
| 最近记录: |