Nae*_*sis 5 c++ random glm-math
我用来生成和glm::linearRand(-1.0f, 1.0f)之间的随机浮点数。然后,我输出正数(或以上)的百分比。-110.0f
std::srand(time(0)); // Give glm a new seed
uint32_t samples = 1000000000;
uint32_t positive = 0;
uint32_t negative = 0;
for (uint32_t i = 0; i < samples; i++) {
float rand = glm::linearRand(-1.0f, 1.0f);
if (rand >= 0.0f) {
positive++;
} else {
negative++;
}
}
std::cout << "positive %: " << std::setprecision(6) << ((float)positive / samples) * 100 << std::endl;
Run Code Online (Sandbox Code Playgroud)
49.6%无论我运行程序的频率如何(使用不同的种子!),正数的百分比总是以 左右结束。如果我正确理解浮点数,则-1.0f和0.0f之间的数与0.0f和之间的数同样多1.0f。
那么为什么这个程序生成的负数总是多于正数呢?
请注意(他和之间评论交换的结果)提供的测试代码。这证明这次不是问题,但是 的内部浮点数舍入存在一些问题。Bob__IkarusDeveloperMarek Rrandglm::linearRand