如图所示post在 C++ 中有几种生成随机 float 的方法。但是我不完全理解答案的第三个选项:
float r3 = LO + static_cast <float> (rand()) /( static_cast <float> (RAND_MAX/(HI-LO)));
谁能给我解释一下这条线?这里的限制是如何计算的?
最佳答案
rand()
生成从 0
到 RAND_MAX
的随机数。
0 <= rand()/RAND_MAX <= 1
implies: 0 <= rand()/RAND_MAX*(HI-LO) <= HI-LO
implies: LO <= LO + rand()/RAND_MAX*(HI-LO) <= HI
现在由于 RAND_MAX
和 HI-LO
是整数,RAND_MAX/(HI-LO)
被类型转换为 float
.
关于c++ - 解释这个c++随机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22118816/