我知道我可以用rand(max)生成随机浮动.我试图在一定范围内产生一个浮动,这应该不难.但是,例如rand(1.4512)返回0,因此rand不使用浮点数进行计算.现在我try 了一个小把戏,把它转换成一个整数,然后在我想要的范围内随机化一个拟合数,再把它计算回一个浮点数..这是行不通的.

我的问题是如何更好地做到这一点.如果没有更好的方法,为什么这个方法不起作用?(也许对我来说太晚了,我应该在两小时前就开始睡觉了.).整个设计的目的是为数据库记录计算一个"位置"字段,以便用户可以手动排序.我以前从未做过这样的事情,也许有人能给我一个更好的解决方案.

以下是迄今为止的代码:

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

谢谢

推荐答案

让我们回顾一下:

rand()将生成一个(psuedo-)随机变量

rand(int)将生成一个

比如:

def range (min, max)
    rand * (max-min) + min
end

应该做得很好.

更新:

刚刚通过一个小单元测试进行了测试:

def testRange
    min = 1
    max = 100

    1_000_000.times { 
        result = range min, max
        print "ERROR" if result < min || result  > max
    }
end

看起来不错.

Ruby相关问答推荐

ASDF 上缺少 Ruby 版本

Rack并发 - rack.multithread、async.callback 或两者兼而有之?

Procs的绑定

Ruby 中有类似 Python 生成器的东西吗?

方法如何在 Ruby 中使用哈希参数?

如何将参数传递给 array.map 快捷方式?

有效的Electron邮件地址正则表达式?

使用 Ruby MiniTest 之前/之后的套件

在 Ruby 中创建数字、字符串、数组或哈希的 md5 哈希

如何通过反射获取 Ruby 的 Module 类定义的常量?

我可以在 Ruby 2.x 中要求命名参数吗?

动态设置 Ruby 对象的属性

相当于 Ruby 中的通过

如何通过反射获得活动记录关联

如何测试数组中的所有项目是否相同?

很好地格式化输出到控制台,指定选项卡的数量

Ruby - Array#<< 和 Array#push 之间的区别

Ruby中的urldecode?

Ruby 中的动态方法调用

如何使用 Ruby-Rails 删除文件夹的所有内容?