2012-10-09 10 views
7

のScaladocページランダムhttp://www.scala-lang.org/api/current/scala/util/Random.html)は、nextDouble "この乱数ジェネレータのシーケンスから0.0〜1.0の間に均等に分布する次の擬似乱数を返します。ScalaのRandom.nextDoubleの範囲は何ですか?

かなり目立つように、「包含」から除外されます。たとえば、値0.0と1.0は可能ですか?もしそうなら、どちらの(あるいはその両方)?たとえば、この数値で除算している場合は、0が返された値でないことを確認する必要があります。他のケースでは、私は1.0を望んでいないかもしれません。明らかに、これはテストで入手するのが難しいです。約10^15の値は0.0〜1.0です。

どちらですか?

+1

サイドノート:1.0は排他的ですが、浮動小数点数の内部表現のために、1.0に近い値が1.0と表示されることがあります(これにはJavaパズルがありますが私は今それを見つけることができません)。 – sschaef

答えて

13

これは、scala.util.Randomが非常に薄いラッパーで、java.util.Random(これは、「Xを含む」と書いてください)ということです。 in sufficient detail記載されsee the source):

nextDoubleの一般的な契約が(約選択その1つの二重値である)を均一範囲0.0d(包括)から)(排他を1.0Dすることです擬似ランダムに生成され、返されます。

+2

nextDouble()は信じられないほど重要な関数です:これはEXCRUCIATINGの詳細で "scaladocs"という言語で文書化する必要があります。それがJava関数のラッパーであるという事実に依拠して、q.v.非常に悪い考えです。Java関数に基づいていることは間違いありません。いずれにせよ、答えに感謝! –

関連する問題