生成具有受控精度级别的随机浮点数

时间:2013-12-31 00:18:26

标签: ruby

这会在Ruby中生成一个具有一定精度级别的随机浮点数:

def generate(min,max,precision)
  number = rand * (max - min) + min
  factor = 10.0 ** precision
  return (number * factor).to_i / factor 
end

最近有人建议我这样做可能更简单:

var = rand(100) * 1.0    
var /= 10

从0.0到10.0生成随机浮点数。

这听起来不错,但我不确定如何使用该方法控制精度等级。我怎样才能使用与我的第一种方法相同的方法,但是使用这个建议?

1 个答案:

答案 0 :(得分:2)

如果您的范围为x1x2,并且您想要增量的最小增量("精度"),那么您需要

n = (x2 - x1)/delta +1

使用

缩放的不同整数
rand(n) * delta + x1

x1x2之间提供随机数,增量为{​​{1}}

你如何定义&#34;精度&#34;? <{1}}和delta之间的关系(根据您的公式)由

给出
delta

或者

precision