我知道我可以用 rand(max) 生成随机 float 。我试图生成一个范围内的 float ,这应该不难。但是例如 rand(1.4512) 返回 0,因此 rand 不是用 float 计算的。现在我尝试了一个小技巧,将它转换为一个整数,然后在我想要的范围内随机化一个合适的数字后,将它计算回一个 float ......这是行不通的。
我的问题是如何以更好的方式做到这一点。如果没有更好的方法,为什么这个方法不起作用? (也许对我来说太晚了,我应该在 2 小时前开始 sleep ……)。整个事情旨在成为一种计算数据库记录“位置”字段的方法,以便用户可以手动订购它们。我以前从未做过这样的事情,也许有人可以用更好的解决方案提示我。
这是目前的代码:
def calculate_position(@elements, index)
min = @elements[index].position
if @elements[index + 1].nil?
pos = min + 1
else
pos = min + (rand(@elements[index + 1].position * 10000000000) / 10000000000)
end
return pos
end
最佳答案
将一系列 float 传递给 rand
如果您想“在两个 float 之间的范围内创建一个随机 float ”,只需将一系列 float 传递给 rand
。
rand(11.2...76.9)
(使用 Ruby 2.1 测试)
编辑
根据文档:https://ruby-doc.org/core-2.4.0/Random.html
有两种不同的方式来编写随机函数:包含和排除对于最后一个值
rand(5..9) # => one of [5, 6, 7, 8, 9]
rand(5...9) # => one of [5, 6, 7, 8]
rand(5.0..9.0) # => between 5.0 and 9.0, including 9.0
rand(5.0...9.0) # => between 5.0 and 9.0, excluding 9.0
关于ruby - 如何最好地在两个 float 之间的范围内创建一个随机 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1711681/