Ruby on rails 如何打印出一个范围内的随机数?

Ruby on rails 如何打印出一个范围内的随机数?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有以下内容,但它不起作用: <%= (5..30).sample %> 这将在该范围内生成一个随机数: 5 + rand(25) 只需将最小值添加到rand(max-min)中即可。试一试 <%= [*5..30].sample %> ……或者 <%= rand(5..30) %> 范围没有#示例方法。改用数组中的一个 <%= (5..30).to_a.sample %> 对于1个随机数: a = (5...30).sort_by

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

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

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

5 + rand(25)
只需将最小值添加到rand(max-min)中即可。

试一试

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

……或者

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

范围
没有
#示例
方法。改用
数组中的一个

<%= (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)

第一种解决方案效率低下。好在这不是一个5到100万之间的随机数。。。第二种解决方案仅适用于Ruby 1.9.3。这个问题以前已经被回答过:@Marc AndréLaortune:是的,我同意,在所有事情上。我要投我的一票,兰德的效率要低得多!您的解决方案是O(n log n),而不是O(1)中的解决方案!如果你需要一个数组中的许多随机样本,请使用
Array#sample
。谢谢@Marc Andre,你每天都能学到新东西。我根据你的建议更新了我的答案