random.Next(0,5)
Il ne renvoie jamais le 5 (mais renvoie parfois le 0.) Pourquoi ? Je pensais que ce ne sont que des valeurs limites qui peuvent être renvoyées. Merci
random.Next(0,5)
Il ne renvoie jamais le 5 (mais renvoie parfois le 0.) Pourquoi ? Je pensais que ce ne sont que des valeurs limites qui peuvent être renvoyées. Merci
La documentation indique que la limite supérieure est exclusive. Exclusif signifie qu'il n'est pas inclus dans l'ensemble de retour possible. Dans une notation plus mathématique 0 <= x < 5
dans ce cas.
Directement à partir de la documentation :
Summary:
Returns a random number within a specified range.
Parameters:
minValue:
The inclusive lower bound of the random number returned.
maxValue:
The exclusive upper bound of the random number returned. maxValue must be
greater than or equal to minValue.
Returns:
A 32-bit signed integer greater than or equal to minValue and less than maxValue;
that is, the range of return values includes minValue but not maxValue. If
minValue equals maxValue, minValue is returned.
Si vous regardez les paramètres, vous verrez que minValue
est inclusif (c'est pourquoi votre 0 se produit) et maxValue
est exclusif (votre 5 ne se produit jamais).
Cela a été écrit il y a longtemps mais je commenterai quand même. Je pense que la principale raison de cette décision de conception est que la plupart sinon tous les générateurs de nombres aléatoires génèrent des nombres de 0 à 2^32-1. Donc, si vous spécifiez Int32.MaxValue, vous n'obtiendrez jamais ce nombre. Avoir une exception pour un numéro ne devait pas être acceptable pour les concepteurs, ils ont donc décidé d'exclure le support. Problème résolu!
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.