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