Хотя вы можете использовать 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
могут сортироваться) Оказывается, что аналитика кинеза амазонки в течение времени записи не обеспечивает возможность управления ключами раздела при записи в целевой поток. Это создаст некоторые внутренние ключи раздела и продвинет записи на нисходящий поток согласно этим ключам.