2010-07-06 3 views
0

Je reçois "Index était en dehors des limites de la matrice." erreur lorsque vous utilisez ce code:L'index était en dehors des limites du tableau

Dim RandomA As String = "aAÀàÁâÄäÅåĀāĂ㥹ǞǟǺǻÃãÄ" 
TextBox1.Text = TextBox1.Text.Replace("a", RandomA((Int(Rnd() * RandomA.Count)) - 1)) 

Je ne vois pas comment l'index (aléatoire) peut être hors limites?

+0

Ben, ne mettez pas de balises comme "(VB.NET)" dans le titre. Il suffit de laisser taht pour les tags. Jetez également un coup d'œil et voyez ce que les autres utilisent pour les tags. Le tien était terrible. –

Répondre

4

Int(Rnd() * RandomA.Count) peut renvoyer 0 et 0 - 1 est en dehors des limites.

+0

@Ben: La documentation de la fonction 'Rnd' de Microsoft dit" La fonction Rnd renvoie une valeur inférieure à 1, mais supérieure ou égale à zéro. " –

+0

@ OlivierJacot-Descombes: essayez 'Int (Double.Epsilon * RandomA.Count)' –

+0

Il renvoie 0.0 comme prévu. Votre explication est OK. Je voulais juste expliquer la fonction 'Rnd'. –

0

c'est une condition de bord pour sûr. l'équation est évaluée à -1 dans certaines conditions de nombre aléatoire.

+0

Mauvaise explication. –

Questions connexes