如何在WHERE范围内使用随机数?

时间:2014-04-19 14:36:07

标签: ruby-on-rails ruby

我想选择范围从0到生成的随机数的所有数据集。

这有效:

@test = Test.where( :level => 0..4 )

这不起作用:

@test = Test.where( :level => 0..rand(4) )

如果我将 rand(4)作为范围的上限,我就不会得到任何结果。为什么?我该怎么办?

由于

编辑:对不起,我不知道rand(4)表示4不在范围内,3是最大结果。我现在解决了这个问题谢谢。

3 个答案:

答案 0 :(得分:1)

做这样的事情..

a=Random.new

@test = Test.where(:level=>0..(x*a.rand))   # where x is the no of level .

或者这样做..

@test= Test.where (:level=>0..a.integer(x))  # where x is same as above

答案 1 :(得分:0)

rand(4)返回0时,您无法获得任何结果。

尝试使用Array#sample生成1到4之间的随机数:

@test = Test.where( :level => 0..(1..4).to_a.sample )

答案 2 :(得分:-2)

如果您使用的是Ruby 1.9.3或更高版本,您可以使用内核#rand(可以接受范围)

示例:

@test = Test.where(id: 0..rand(0..4))

编辑:正如bjhaid指出的那样,它没有在查询之间进行