【发布时间】:2011-08-23 18:41:23
【问题描述】:
我想知道使用 Ruby rand 内核函数(请不要使用 Random 模块)在封闭区间内获取伪随机浮点数的最佳方法。
举个例子,我将使用闭区间 [0.0, 7.7](区间中包含 0.0 和 7.7),但任何其他浮点区间也应该是有效的。
对于区间 [0.0, 7.7],下一个解无效:
rand * 7.7
为什么?
如果你调用 rand 没有参数,你会得到一个大于或等于 0.0 且小于 1.0 的伪随机浮点数。那么之前的解决方案可以给我们的浮点数范围是多少呢?
rand 将返回 [0.0, 0.9999999...] 范围内的伪随机浮点数
0.0 * 7.7
=> 0.0 # Correct!
0.9999999 * 7.7
=> 7.69999923 # Incorrect!
区间与 [0.0, 7.7] 不匹配。
有人知道这个问题的优雅解决方案吗?
谢谢!
【问题讨论】:
标签: ruby random floating-point