随机数生成器只添加数字c++



我正在从.txt文件中的间隔读取数字。我们只说它看起来像这样:

parameter[100, 10000]

我的程序读取参数MIN和参数MAX(100和10000(然后我试着在这个区间内随机生成数字,但它只生成第一个数字,然后一直加+2。我使用的是面向对象编程。。这很奇怪,因为对于文件中的其他间隔,它添加了+3,而对于一个间隔,它工作得很好。有什么想法吗?

interval_osvetljenost = inter_osvetMIN + static_cast <float> (rand()) / (static_cast <float> (RAND_MAX / (inter_osvetMAX - inter_osvetMIN)));
interval_temperatura = inter_tempMIN + static_cast <float> (rand()) / (static_cast <float> (RAND_MAX / (inter_tempMAX - inter_tempMIN)));
interval_vlaznost = inter_vlazMIN + static_cast <float> (rand()) / (static_cast <float> (RAND_MAX / (inter_vlazMAX - inter_vlazMIN)));

不要在C++中使用C的rand(),而是使用C++风格的随机数生成器。在您的情况下,您可以使用std::uniform_int_distribution生成2个数字之间的随机数,例如:

#include <random>
std::random_device rd;  //Will be used to obtain a seed for the random number engine
std::mt19937 gen(rd()); //Standard mersenne_twister_engine seeded with rd()
std::uniform_int_distribution<> dist_osvet(inter_osvetMIN, inter_osvetMAX);
std::uniform_int_distribution<> dist_temperatura(inter_tempMIN, inter_tempMAX);
std::uniform_int_distribution<> dist_vlaznost(inter_vlazMIN, inter_vlazMAX);

interval_osvetljenost = dist_osvet(gen);
interval_temperatura = dist_temperatura(gen);
interval_vlaznost = dist_vlaznost(gen);

最新更新