【发布时间】:2011-12-31 20:27:02
【问题描述】:
我有以下,但它不起作用:
<%= (5..30).sample %>
【问题讨论】:
标签: ruby-on-rails ruby
我有以下,但它不起作用:
<%= (5..30).sample %>
【问题讨论】:
标签: ruby-on-rails ruby
试一试。
<%= [*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
这似乎比其他人建议的更冗长,但从这里,很容易从同一范围内选择三个随机唯一数字:
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 个随机 foo 的人有用
编辑: 感谢 Marc-Andre Lafortune,我发现以下内容要好得多:
a=[*5..30].sample(3)
【讨论】:
Array#sample。