Random#randとKernel#randには本当に違いがありますか?
私が見ることができることから、彼らは異なる「C」関数を使用しています。
少し異なるAPIのように見えますが、どちらも実際の生成をgenrand_real
関数に任せているようです。
で呼び出された場合は同じように動作しますが、Range
他のいくつかの場合は異なります。
Random#rand
呼び出されるとArgumentError
、が発生しますが、 n(by )Kernel#rand
で呼び出した場合と同じように動作します。(-n).to_int.abs
Random#rand
は発生しますがArgumentError
、
Kernel#rand
引数なしで呼び出した場合と同じように動作します。Float
nで呼び出されると、0とnRandom#rand
の間のfloatを返します(予想どおり)。変換を行うため、たとえば、は常に0を返すと同等です。と同等であり、したがってと同等です。Kernel#rand
n.to_int.abs
rand(-1.9)
rand(1)
rand(0.1)
rand(0)
rand
Random#rand
(そしてもちろん)奇妙なパラメータRandom::rand
よりもロバストなようです。およびKernel#rand
のドキュメントの詳細情報。Kernel#rand
Random#rand