如何打印范围之间的随机数?

时间:2011-11-18 00:18:41

标签: ruby-on-rails ruby

我有以下但是它不起作用:

<%= (5..30).sample %>

4 个答案:

答案 0 :(得分:102)

给这一点。

<%= [*5..30].sample %>

...或...

<%= rand(5..30) %>

答案 1 :(得分:6)

这会在该范围内生成一个随机数:

5 + rand(25)

只需将min添加到rand(max-min)。

答案 2 :(得分:5)

Range没有#sample方法。请改用Array中的一个。

<%= (5..30).to_a.sample %>

答案 3 :(得分:3)

为1个随机数:

a = (5...30).sort_by{rand}[1]
# => 7

它似乎比其他人建议的更冗长,但从这里开始,很容易从同一范围中选择三个随机唯一数字:

a = (5...30).sort_by{rand}[1..3]
# => [19, 22, 28]

或20:

a = (5...30).sort_by{rand}[1..20]
# => [7, 12, 16, 14, 13, 15, 22, 17, 24, 19, 20, 10, 21, 26, 29, 9, 23, 27, 8, 18] 

可能对需要在侧栏中显示5个随机foos的人有用

修改 感谢Marc-Andre Lafortune,我发现以下情况要好得多:

a=[*5..30].sample(3)