Генерировать случайное число с 7 цифрами

Как я могу создать случайное число в диапазоне от 1 миллиона до 10 миллионов.

rand (10) работает, я попробовал rand (1..10), и это не сработало.

Ответ 1

Возьмите свой базовый номер, 1,000,000 и добавьте случайное число от 0 до вашего максимального - стартовый номер:

 1_000_000 + Random.rand(10_000_000 - 1_000_000) #=> 3084592

Ответ 2

Это метод экземпляра:

puts Random.new.rand(1_000_000..10_000_000-1) 

Ответ 3

Это приведет к случайному числу от 1 000 000 до 9999 999.

rand(10_000_000-1_000_000)+1_000_000

Это работает в 1.8.7 без каких-либо драгоценных камней (backports и т.д.).

Ответ 4

Или, если производительность не является проблемой, и вы не хотите считать нули:

(0...7).map { |i| rand((i == 0 ? 1 : 0)..9) }.join.to_i

Ответ 5

Я считаю это более читаемым:

7.times.map { rand(1..9) }.join.to_i

Ответ 6

Другой вариант с совместимостью ruby ​​1.8.7:

rand (9999999999).to_s.center(10, rand (9).to_s).to_i