我只是想知道下面的代码是否真的包含值3.0? (我知道 rand() 不是最好的,但我只是想尝试一下)
//function returns random double value between specificed range, inclusively.
double randomDouble (double minVal, double maxVal) {
return double(rand()) / RAND_MAX * (maxVal - minVal) + minVal;
}
我的逻辑是这样的
因此,我尝试通过运行以下代码来测试它们是否真的包含 maxVal:
int cnt = 0;
for (int i = 0; i < 999999999; i++) {
if (randomDouble(1.0, 3.0) == 3.0) {
cnt++;
}
}
cout << cnt << endl;
但 cnt 始终为零。
所以我不确定我的功能是否正确?
如果
maxVal
恰好返回 rand()
,则函数返回 RAND_MAX
的唯一方法。这种情况非常罕见,测试 999999999 次可能还不足以达到目的。