Как я могу произвести случайное число в диапазоне от 1 миллиона до 10 миллионов.
rand (10) работает, я пробовал rand (1..10), но это не сработало.
Возьмите ваш базовый номер, 1 000 000 и добавьте случайное число от 0 до вашего максимального - начальный номер:
1_000_000 + Random.rand(10_000_000 - 1_000_000) #=> 3084592
Это метод экземпляра:
puts Random.new.rand(1_000_000..10_000_000-1)
Я нахожу это более читабельным:
7.times.map { rand(1..9) }.join.to_i
Или, если производительность не является проблемой, и вы не хотите считать нули:
(0...7).map { |i| rand((i == 0 ? 1 : 0)..9) }.join.to_i
Будет сгенерировано случайное число от 1 000 000 до 9 999 999.
rand(10_000_000-1_000_000)+1_000_000
Это работает в 1.8.7 без каких-либо драгоценных камней (backports и т. Д.).
Еще один вариант с совместимостью с ruby 1.8.7:
rand (9999999999) .to_s.center (10, rand (9) .to_s) .to_i