c++ - 解释这个c++随机

标签 c++ random limits

如图所示post在 C++ 中有几种生成随机 float 的方法。但是我不完全理解答案的第三个选项:

float r3 = LO + static_cast <float> (rand()) /( static_cast <float> (RAND_MAX/(HI-LO)));

谁能给我解释一下这条线?这里的限制是如何计算的?

最佳答案

rand() 生成从 0RAND_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_MAXHI-LO 是整数,RAND_MAX/(HI-LO) 被类型转换为 float.

关于c++ - 解释这个c++随机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22118816/

相关文章:

c++ - 如何获取连接到 mysql 服务器的主机列表

c++ - 比较不同版本库性能的最佳方法

C++ 一个类继承自一个类型

c++ - 如何获取 llvm 内联 asm 操作数类型?

R:{ggplot2}:我如何/如何独立调整 facet_grid 图上的 x 轴限制?

python - 内存错误和列表限制?

javascript - Jquery/Javascript 为一类四个按钮提供四个不同的随机数

algorithm - 基本随机算法递归

python - 根据值随机选择字典键

python - 散点图的轴限制 - Matplotlib