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