Kann scala.util.Random.nextInt (): Int gelegentlich einen negativen Wert zurückgeben?

8

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?

    
Ivan 16.10.2011, 11:14
quelle

4 Antworten

9

Offensichtlich, ja. Es hat einen negativen Wert bei meinem ersten Versuch zurückgegeben! : -)

%Vor%     
missingfaktor 16.10.2011, 11:26
quelle
12

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%.

    
om-nom-nom 16.10.2011 11:24
quelle
8

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:

%Vor%

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.

    
Pablo Fernandez 16.10.2011 14:47
quelle
2

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.

    
Clark Bao 16.10.2011 13:00
quelle

Tags und Links