【发布时间】:2020-12-17 18:05:46
【问题描述】:
我正在读取 .txt 文件中的间隔中的数字。假设它看起来像这样:
parameter[100, 10000]
我的程序读取parameterMIN和parameterMAX(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)));
【问题讨论】:
-
如果您可以拥有
std::uniform_int_distribution,则无需为rand和自定义计算而烦恼。 -
在第一次调用
rand()之前,您是否通过srand()使用种子初始化了rand()的生成器?srand()应该被调用一次,最好在程序启动时调用,并且通常以time()作为种子。否则,根本不要使用rand(),而是使用C++-style random number generators。 -
我已经在文本中添加了代码,我不太明白这个 uniformint_distribution 是如何工作的
-
是的,我有 srand 功能,因为它适用于我的时间间隔之一
-
@Peter "我不太明白
uniform_int_distribution的工作原理" - 看看 this page 上的示例。它会在 2 个数字之间生成一个随机数。