сгенерировать случайное число из 7 цифр - PullRequest
9 голосов
/ 20 апреля 2011

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

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

Ответы [ 6 ]

13 голосов
/ 20 апреля 2011

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

 1_000_000 + Random.rand(10_000_000 - 1_000_000) #=> 3084592
6 голосов
/ 20 апреля 2011

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

puts Random.new.rand(1_000_000..10_000_000-1) 
1 голос
/ 17 марта 2017

Я нахожу это более читабельным:

7.times.map { rand(1..9) }.join.to_i
1 голос
/ 10 июня 2013

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

(0...7).map { |i| rand((i == 0 ? 1 : 0)..9) }.join.to_i
1 голос
/ 20 апреля 2011

Будет сгенерировано случайное число от 1 000 000 до 9 999 999.

rand(10_000_000-1_000_000)+1_000_000

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

0 голосов
/ 24 января 2013

Еще один вариант с совместимостью с ruby ​​1.8.7:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...