Ответ 1
Сделайте снимок.
<%= [*5..30].sample %>
... или...
<%= rand(5..30) %>
У меня есть следующее, но оно не работает:
<%= (5..30).sample %>
Сделайте снимок.
<%= [*5..30].sample %>
... или...
<%= rand(5..30) %>
Это создаст случайное число в этом диапазоне:
5 + rand(25)
Просто добавьте min в 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 случайных фосов в своей боковой панели.
EDIT: Благодаря Marc-Andre Lafortune, я обнаружил, что следующее намного лучше:
a=[*5..30].sample(3)