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

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

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

给这个一个镜头。

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

…要么…

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

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

 5 + rand(25) 

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

Range没有#sample方法。 改用Array来代替。

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

对于1个随机数字:

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

它似乎比其他人build议的更详细,但从这里,很容易从同一范围内挑选三个随机唯一的数字:

 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)