La documentazione per scala.util.Random.nextInt (n: Int): Int
dice "Restituisce un valore int pseudocasuale, uniformemente distribuito tra 0 (incluso) e il valore specificato (esclusivo) ..." mentre per scala.util.Random.nextInt(): Int
dice "Restituisce il valore int successivo pseudocasuale, uniformemente distribuito ..." senza ssare nulla sullo zero. Posso ottenere un valore negativo qui occasionalmente?Can scala.util.Random.nextInt(): Int occasionalmente restituisce un valore negativo?
risposta
A quanto pare, sì. Al mio primo tentativo ha restituito un valore negativo! :-)
scala> import util.Random
import util.Random
scala> Random.nextInt
res0: Int = -299006430
quali sono le probabilità ?! :) –
@FabienWarniez, quali sono le probabilità che lei commenta questo sul mio post antico ieri, e io che mi imbatto in una situazione simile all'incirca nello stesso periodo? :) https://twitter.com/missingfaktor/status/914642815854006272 – missingfaktor
Sono un po 'spaventato TBH! – missingfaktor
Sì, è possibile (e ciò è corretto a causa di definition di distribuzione uniforme). Inoltre lo riceverai in quasi il 50% dei casi.
(for(i <- 1 to 100000) yield scala.util.Random.nextInt()).filter(_<0).length
hanno ceduto per me 49946 - che è abbastanza vicino al 50%.
In media, infatti, * esattamente * 50% dei casi –
@Luigi Non dimenticare i casi neutrali, quando il valore casuale è uguale a 0. Quindi ci sono 49,9 ...% percentuali di positivo, il stesso numero di negativi e pochi zeri. –
Non ho dimenticato ... beh, suppongo che qualsiasi valore sia altrettanto probabile. Forse non puoi ottenere Int.MinValue o qualcosa del genere. Ci sono 2147483648 negativi, 2147483647 positivi e 1 zero Int –
scala.uti.Random.nextInt(): Int sfrutta lo stesso metodo di java.util.Random. E l'intervallo indicato da Luigi è [Integer.MIN_VAL, Integer.MAX_VAL]. In realtà "valore int uniformemente distribuito" significa che è possibile restituire qualsiasi numero di tipo int e la possibilità di ciascuno in teoria di essere la stessa.
Come si può vedere here (usando eccellente sxr di Mike Harrah), Random
solo i delegati di Scala a un java.util.Random
sottostante, che viene indicato come self
.
Come altri hanno sottolineato, l'intervallo predefinito è compreso tra Integer.MIN_VAL
e Integer.MAX_VAL
, in altre parole, qualsiasi Integer
possibile, compresi quelli negativi.
Se si desidera solo il campo positivo, è possibile utilizzare il metodo di overload nextInt
che prende un argomento, come questo:
Random.nextInt(Integer.MAX_VALUE);
Secondo la documentazione:
Restituisce un pseudocasuale, uniformemente valore int distribuito tra 0 (incluso) e il valore specificato (esclusivo), tratto da questa sequenza del generatore di numeri casuali .
- 1. Can queue: pop restituisce un valore ora?
- 2. SQLAlchemy occasionalmente restituisce erroneamente un risultato vuoto
- 3. Perché numeric_limits :: min restituisce un valore negativo per int ma valori positivi per float/double?
- 4. Perché Cocoa restituisce occasionalmente una stringa vuota?
- 5. Perché java.util.zip.CRC32.getValue() restituisce un valore long, non un int?
- 6. Valore ASCII negativo
- 7. Can graphql restituisce conteggi aggregati?
- 8. javax.servlet.HttpServletRequest.getContentLength() restituisce solo int
- 9. Unsigned long con valore negativo
- 10. assegnando un valore nullo per un int
- 11. int Perché non firmato conteneva numero negativo
- 12. divisione intera in Ruby con valore negativo
- 13. Come `({...})` restituisce un valore?
- 14. getCheckedRadioButtonId() restituisce int inutile?
- 15. Java int getto restituisce 0
- 16. Can A Constructor Restituisce una sottoclassifica?
- 17. valore più negativo per Python
- 18. Perché Math.Round non restituisce un int?
- 19. C# string.GetHashCode() restituisce un risultato non int.
- 20. sprintf() valore di ritorno negativo e errno
- 21. Can String.Split() restituisce mai null? (.net)
- 22. C size_t e ssize_t valore negativo
- 23. Subprocess.poll() restituisce erroneamente un valore
- 24. Dividi stringa nell'Elenco <int> ignora nessun valore int
- 25. Se una funzione restituisce un int, può essere assegnato un int ad esso?
- 26. Restituisce sempre il valore positivo
- 27. ContextCompat.checkSelfPermission() restituisce un valore errato
- 28. getHours() restituisce un valore errato
- 29. Perché operator ++ restituisce un valore non const?
- 30. SecItemCopyMatching restituisce un valore nullo senza errori
Dove dice questo? I documenti che ho trovato dicevano "Tutti i 2^32 possibili valori int sono prodotti con (approssimativamente) probabilità uguale", il che significa che i numeri negativi sono * più * probabili rispetto a quelli positivi (poiché c'è un altro numero negativo). – Malvolio