Montag, Januar 27, 2020

Kann scala.util.Random.nextInt (): Int gelegentlich eine negative Rendite Wert?

Dokumentation für scala.util.Random.nextInt (n: Int): Int sagt „Gibt einen Pseudo-zufälligen, gleichmäßig verteilten int-Wert zwischen 0 (einschließlich) und dem angegebenen Wert (exklusive)…“, während er für scala.util.Random.nextInt (): Int es sagt „liefert die nächste Pseudo-zufälligen, gleichmäßig verteilten int-Wert…“, ohne ssaying etwas über die null. Bekomme ich einen negativen Wert hier gelegentlich?

  • Woher kommt es, dass? Die docs die ich gefunden, sagte „Alle 2^32 möglichen int-Werte wurden mit (ungefähr) gleicher Wahrscheinlichkeit“, was bedeutet, dass negative zahlen sind wahrscheinlicher als positive (da gibt es noch eine negative Zahl).
InformationsquelleAutor Ivan | 2011-10-16

4 Kommentare

  1. 10

    Anscheinend, ja. Wird es wieder einen negativen Wert auf meine ersten versuche! 🙂

    scala> import util.Random
    import util.Random
    
    scala> Random.nextInt
    res0: Int = -299006430
    • was sind die Chancen, dass?! 🙂
    • was sind die Chancen Sie kommentieren dies auf meine alten post gestern, und mir läuft in ähnlicher situation bei etwa der gleichen Zeit? 🙂 twitter.com/missingfaktor/status/914642815854006272
    • Ich bin ein bisschen erschreckt, TBH!
    • Diese Antwort aus dem Jahr 2011 war das zweite suchergebnis, wenn ich nach Begriffen scala random int non-zero. Vielleicht ist es ein Zeichen.
  2. 12

    Ja, Sie können (und das ist ok wegen definition der gleichmäßigen Verteilung). Außerdem erhalten Sie es in fast 50% der Fälle.

    (for(i <- 1 to 100000) yield scala.util.Random.nextInt()).filter(_<0).length

    ergab für mich 49946 – das ist ganz in der Nähe der 50%.

    • Im Durchschnitt, in der Tat, genau 50% der Fälle
    • Vergessen Sie nicht, über neutral Fällen, wenn zufällig der Wert ist gleich 0. Also es wäre 49,9…% Proz. für positive, die gleiche Anzahl von negativen und ein paar Nullen.
    • Ich habe das nicht vergessen… naja, ich gehe davon aus, dass jeder Wert ist gleich wahrscheinlich sind. Vielleicht können Sie nicht bekommen, Int.MinValue oder so etwas. Es gibt 2147483648 negative, 2147483647 positiv, und 1 null, Int
    • Ok, I got your point of view ) Du hast Recht.
  3. 9

    Wie Sie sehen können hier (mit Mike Harrah ‚ s ausgezeichnete sxr), Scala Random nur die Delegierten zu einer zugrunde liegenden java.util.Random bezeichnet als self.

    Als andere darauf hingewiesen, standardmäßig liegt der Bereich zwischen Integer.MIN_VAL und Integer.MAX_VAL, in anderen Worten, jede Integer möglich, auch die negativen.

    Wenn Sie nur den positiven Bereich, Sie können die überladene Methode nextInt dass ein argument, wie diese:

    Random.nextInt(Integer.MAX_VALUE);

    Laut der docs:

    Gibt eine Pseudo-zufälligen, gleichmäßig verteilten int-Wert zwischen 0
    (einschließlich) und dem angegebenen Wert (exklusive), gezogen von dieser
    random number generator-Sequenz.

    • Wenn Sie möchten den positiven Bereich, würden Sie lieber tun: Random.nextInt(Integer.MAX_VALUE+1), da 0 nicht positiv und Integer.MAX_VALUE wird ausgeschlossen, die am oberen Ende.
  4. 2

    scala.uti.Random.nextInt (): Int nutzt die gleiche Methode von java.util.Random. Und die Auswahl, wie Luigi darauf hingewiesen, [Integer.MIN_VAL,Integer.MAX_VAL]. Tatsächlich ist der „gleichmäßig verteilten int-Wert“ bedeutet eine beliebige Anzahl von int-Typ ist möglich zurückgegeben werden, und die chance, jeder in der Theorie die gleichen zu sein.

Kostenlose Online-Tests