Как получить реальные случайные числа в ruby1.9.3?

Вопрос находится в заголовке. Есть ли какой-нибудь камень для этого? Пробовал RealRand, но кажется, что это не работает для меня. Может быть, я делаю что-то неправильно?

4 ответа

Лучшее определение и источник "реальных" случайных чисел (которые не являются псевдослучайными), я нашел в http://realrand.rubyforge.org/ Короче говоря, это означает, что "реальные" случайные числа не могут быть генетически обработаны компьютером и алгоритмом, он может генерироваться только природой. Я знаю теории, которые говорят, что природа - всего лишь куча алгоритмов, поэтому я считаю, что это пища для дебатов, которые выше моего уровня. В любом случае сайт дает некоторые сайты, которые генерируют случайные числа из таких вещей, как "временные пары радиоактивных распадов, обнаруженные трубой Гейгера-Мюллера, сопряженной с компьютером".

Меня интересуют, какие комментарии и ответы это порождают, +1 от меня.


Ruby 1.9 вводит класс под названием Random, который генерирует псевдослучайные числа на основе алгоритма Mersenne Twister. Для практического использования на личном уровне это должно быть достаточно.


Питер прав. Однако мы можем получить довольно хорошую случайность с openssl и безопасный случайный .

код:

require "securerandom"
 puts SecureRandom.random_number


Думаю, вам, возможно, придется немного подумать над своим вопросом. Есть более реальные числа между 0 и 1, тогда есть целые числа между отрицательной бесконечностью и бесконечностью. Дайте статью в википедии о мощности на действительных числах посмотреть.

Но вы можете легко генерировать реальные случайные числа в пределах диапазона и точности. Предположим, вы хотели создать реальное случайное число от 0 до 1 с 16 цифрами точности.

r = Random.new
r.rand
=> 0.7182182166496581

Вы можете адаптировать это решение для генерации реальных чисел от -10 до 10.

r.rand(-10.0..10.0)
 => 7.00152804654363

Отъезд http://www.ruby-doc.org/core-1.9.3/Random.html и Как получить случайное число в Ruby для получения дополнительной информации.

licensed under cc by-sa 3.0 with attribution.