【发布时间】:2009-11-10 22:25:30
【问题描述】:
我知道我可以使用 rand(max) 生成随机浮点数。我试图在一个范围内生成一个浮点数,这应该不难。但是例如 rand(1.4512) 返回 0,因此 rand 不使用浮点数进行计算。现在我尝试了一个小技巧,将事物转换为整数,并在我想要的范围内随机化一个拟合数字后,将其计算回浮点数..这是行不通的。
我的问题是如何以更好的方式做到这一点。如果没有更好的方法,为什么这个不起作用? (也许对我来说太晚了,我应该在 2 小时前开始睡觉......)。整个事情旨在成为一种计算数据库记录的“位置”字段的方法,以便用户可以手动订购它们。我以前从来没有做过这样的事情,也许有人可以给我一个更好的解决方案。
这是目前为止的代码:
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
谢谢!
【问题讨论】:
-
如果以下答案不可接受,请您澄清问题?
-
感谢大家的回答,干净又好解释
-
@sandor_bedo 的答案可能是最好的:
rand(-34.0..53.8)
标签: ruby