Хотя вы можете использовать rand(42-10) + 10
для получения случайного числа от 10
до 42
(где 10 включительно и 42 исключительно), существует лучший способ, начиная с Ruby 1.9.3, где вы можете вызывать:
rand(10...42) # => 13
Доступно для всех версий Ruby, требуя мой backports
драгоценный камень.
Ruby 1.9.2 также представил класс Random
, чтобы вы могли создавать свои собственные объекты генератора случайных чисел, и имеет приятный API:
r = Random.new
r.rand(10...42) # => 22
r.bytes(3) # => "rnd"
Сам класс Random
действует как генератор случайных чисел, поэтому вы вызываете напрямую:
Random.rand(10...42) # => same as rand(10...42)
Примечания к Random.new
В большинстве случаев проще всего использовать rand
или Random.rand
. Создание нового генератора случайных чисел каждый раз, когда вам нужно случайное число, является очень плохой идеей . Если вы сделаете это, вы получите случайные свойства начального алгоритма заполнения, которые являются ужасными по сравнению со свойствами самого генератора случайных чисел .
Если вы используете Random.new
, вы должны, таким образом, называть его как можно реже , например один раз как MyApp::Random = Random.new
, и использовать его повсюду.
Случаи, когда Random.new
полезны, следующие:
- вы пишете гем и не хотите вмешиваться в последовательность
rand
/ Random.rand
, на которую основные программы могут полагаться
- вам нужны отдельные воспроизводимые последовательности случайных чисел (скажем, по одному на поток)
- вы хотите иметь возможность сохранять и возобновлять воспроизводимую последовательность случайных чисел (просто как
Random
объекты могут быть распределены)