Dokumentation für scala.util.Random.nextInt (n: Int): Int
sagt "Gibt einen Pseudozufallswert, gleichmäßig verteilten int-Wert zwischen 0 (inklusive) und dem angegebenen Wert (exklusiv) ..." während für scala.util.Random.nextInt (): Int
es sagt "Gibt den nächsten Pseudozufall, gleichmäßig verteilt int Wert ... ", ohne irgendetwas über die Null zu sagen. Kann ich hier gelegentlich einen negativen Wert erhalten?
Offensichtlich, ja. Es hat einen negativen Wert bei meinem ersten Versuch zurückgegeben! : -)
%Vor%Ja, das können Sie (und das ist in Ordnung, weil Definition der gleichmäßigen Verteilung). Darüber hinaus erhalten Sie es in fast 50% der Fälle.
%Vor%haben für mich 499946 ergeben - das ist ziemlich nah an den 50%.
Wie Sie hier sehen (mit Mike Harrahs exzellentem < strong> sxr ), Scalas Random
delegiert nur an eine zugrunde liegende java.util.Random
, die als self
bezeichnet wird.
Wie andere darauf hinwiesen, liegt der Standardbereich zwischen Integer.MIN_VAL
und Integer.MAX_VAL
, mit anderen Worten% Integer
möglich, einschließlich der negativen.
Wenn Sie nur den positiven Bereich möchten, können Sie die überladene Methode nextInt
verwenden, die ein Argument wie folgt verwendet:
Laut den Dokumenten:
Liefert einen pseudozufälligen, gleichmäßig verteilten int-Wert zwischen 0 (inklusive) und den angegebenen Wert (exklusiv), daraus abgeleitet Reihenfolge des Zufallsgenerators.
scala.uti.Random.nextInt (): Int nutzt dieselbe Methode von java.util.Random. Und der Bereich, auf den Luigi hingewiesen hat, ist [Integer.MIN_VAL, Integer.MAX_VAL]. Tatsächlich bedeutet "gleichmäßig verteilter int-Wert", dass eine beliebige Anzahl von int-Typen zurückgegeben werden kann und die Wahrscheinlichkeit, dass jeder in der Theorie gleich ist.