documentation pour scala.util.random.nextint (n: int): INT code> dit "Retourne un pseudorandom, une valeur INT uniformément distribuée entre 0 (inclus) et la valeur spécifiée (exclusive) .. . "Tandis que pour scala.util.random.nextint (): Int code> Il est écrit" renvoie le prochain pseudorandom, uniformément distribué une valeur int ... ", sans rien dire sur le zéro. Puis-je avoir une valeur négative ici occasionnellement? P>
4 Réponses :
Oui, vous pouvez (et ça va en raison de Définition de distribution uniforme ). De plus, vous l'obtiendrez dans près de 50% des cas.
(for(i <- 1 to 100000) yield scala.util.Random.nextInt()).filter(_<0).length
En moyenne, en fait, exactement i> 50% des cas
@Luigi N'oubliez pas les cas neutres, lorsque la valeur aléatoire est égale à 0. Il y a donc 49,9 ...% des percents de positifs, le même nombre de négatifs et quelques zéros.
Je n'ai pas oublié ... Eh bien, je suppose qu'une valeur est également probable. Peut-être que vous ne pouvez pas obtenir int.minvalue ou quelque chose. Il y a 2147483648 négatif, 2147483647 positif et 1 zéro int
Apparemment, oui. Il a renvoyé une valeur négative lors de mon premier essai! : -)
scala> import util.Random import util.Random scala> Random.nextInt res0: Int = -299006430
Quelles sont les chances de ça ?! :)
@Fabienwarniez, quelles sont les chances de votre commentaire sur mon ancien poste hier, et moi courir dans une situation similaire à peu près au même moment? :) Twitter.com/Missingfaktor/status/914642815854006272
Je suis un peu effrayé tbh!
Cette réponse de 2011 a été le deuxième résultat de la recherche lorsque j'ai cherché scala aléatoire int sans zéro code>. Peut-être que c'est un signe.
scala.uti.random.Nextint (): intère intenter la même méthode de Java.Util.Random. Et la gamme que Luigi a souligné que [INTEGER.MIN_VAL, INTEGER.MAX_VAL]. En fait, une valeur intégrée uniformément distribuée "signifie que tout nombre de type INT est possible d'être renvoyé et que le risque de chacun en théorie est identique. P>
Comme vous pouvez le voir ici ( Utilisation de l'excellent Comme d'autres signalés, la plage par défaut est comprise entre Si vous voulez juste la plage positive, vous pouvez utiliser la méthode surchargée selon les documents: p> retourne un pseudorandom, une valeur INT uniformément distribuée entre 0
(inclus) et la valeur spécifiée (exclusive), dessinée de cette
Séquence du générateur de nombres aléatoires. P>
blockQuote> p> de Mike Harrah's excellent STRY> SCALA ''S> Randoma's's Random code> juste des délégués à un java.util.random sous-jacent code>, qui est appelé auto code>. INTEGER.MIN_VAL CODE> et integer.max_val code>, en d'autres termes, tout integer Code> possible, y compris les négatifs. p> Nextint code> qui prend un argument, comme celui-ci: P>
Si vous souhaitez la plage positive, vous préférez faire: aléatoire.nexint (integer.max_value + 1) code>, car 0 n'est pas considéré comme positif et entier.max_value va être exclu à l'extrémité supérieure .
Où dit-il ça? Les documents que j'ai trouvés ont déclaré "toutes les 2 valeurs INT possibles des 2 ^ 32 sont produites avec (environ) une probabilité égale", ce qui signifie que les nombres négatifs sont plus i> probables que positifs (car il y a un nombre plus négatif) .