質問はヘッダーにあります。これを行うための宝石はありますか?RealRandを試しましたが、うまくいかないようです。多分私は何か間違ったことをしているのですか?
4 に答える
Random
Ruby 1.9 では、 Mersenne Twister というアルゴリズムに基づいて疑似乱数を生成するというクラスが導入されました。個人レベルでの実用には、これで十分でしょう。
ピーターは正しいです。ただし、openssl とsecure randomを使用すると、かなり良いランダム性を得ることができます。
コード:
require "securerandom"
puts SecureRandom.random_number
http://realrand.rubyforge.org/で見つけた「実際の」乱数(疑似乱数ではない)の最良の定義とソース 要するに、「実際の」乱数はコンピューターとアルゴリズム、それは自然によってのみ生成できます。自然はアルゴリズムの集まりにすぎないという理論を知っているので、それは私のレベルを超えた議論の糧になると思います。いずれにせよ、このサイトは、「コンピューターにインターフェースされたガイガーミュラー管によって検出された放射性崩壊の連続するペアのタイミングを計る」などのことから乱数を生成するいくつかのサイトを提供します.
これが生成するコメントと回答、私からの+1に興味があります。
ご質問の内容については、もう少し考えていただく必要があるかと思います。0 と 1 の間にはより多くの実数があり、負の無限大と無限大の間には整数があります。実数のカーディナリティに関するウィキペディアの記事を見てください。
ただし、範囲と精度内で実際の乱数を簡単に生成できます。16 桁の精度で 0 から 1 の間の実乱数を生成したいとします。
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 で乱数を取得する方法を参照してください。