2010-11-30 4 views

Répondre

4

C'est juste une convention, même si elle est quelque peu trompeuse. Vous seriez en mesure de construire un tel scénario (où la sortie est la même à chaque fois) dans tous les cas. Il est utile pour sélectionner un élément aléatoire d'un tableau, par exemple:

var random = new Random(); 
var element = someArray[random.Next(0, someArray.Length)]; // Of course, the lower bound needn't be specified here. 

Modifier: mal compris votre question! Je suppose que c'est soit a) une mauvaise conception ou b) une commodité pour quand vos deux limites seront potentiellement les mêmes. Je serais d'accord que ce n'est pas intuitif cependant.

+0

Oui, je n'ai pas un problème avec elle en générant toujours le même nombre ... c'est juste que quand j'ai essayé (2,3) je m'attendais à ce que 3 soit inclus.Il lance une exception quand max mpen

5

On dirait juste un peu de mauvais design pour moi. Je suis d'accord que maxValue devrait être strictement supérieur à minValue - et il devrait jeter un ArgumentOutOfRangeException si elles sont égales. Ce que je n'aime pas, c'est qu'il y a quelques aspects que je n'aime pas: d'une part, il serait vraiment bien de le brancher correctement (de façon bien documentée) pour pouvoir avoir une sous-classe utilisant une source cryptographiquement sécurisée. Il est possible maintenant, mais vous avez besoin essentiellement de savoir trop sur la mise en œuvre, et quelles méthodes appellent que d'autres les :(

Les gotchas autour de la création d'une nouvelle Random exemple chaque fois que vous allez autour d'une boucle, et l'évidence « fixer » (une variable statique) ne pas être thread-safe sont d'autres contrariétés.

en fait, je ne suis pas terriblement surpris de voir une autre petite verrue :(

Questions connexes