fdiedler2000
Messages postés383Date d'inscriptionsamedi 29 janvier 2005StatutMembreDernière intervention 1 décembre 2008
-
5 déc. 2007 à 13:55
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 2014
-
5 déc. 2007 à 17:45
Bonjour à tous,
Je voudrais générer dans une boucle deux nombre aléatoire. Voila ce que j'ai fais :
*****************
While testersolution() = False
Dim rmd As New Random()
Dim row As Integer = rmd.Next(0, 300)
' Threading.Thread.Sleep(100)
Dim rmd_1 As New Random()
Dim col As Integer = rmd_1.Next(0, 300)
list.Add(row.ToString & "\\\\" & col.ToString)
End While
*****************
Le problème c'est qu'a chaque itération de la boucle, les valeurs sont toujours identiques !! En effet, je sais que Random se base sur l'horloge et donc vu qu'il s'écoule quelque milliseconde entre deux itérations... ca plante le random.
fdiedler2000
Messages postés383Date d'inscriptionsamedi 29 janvier 2005StatutMembreDernière intervention 1 décembre 2008 5 déc. 2007 à 14:15
Salut oui cela existe mais il genère un nombre en 0 et 1 exclu donc je ne vois pas comment faire pour lui demander de générer un nombre en 0 et 2 (inclus). De plus, n'aurais je pas le meme soucis ?
fdiedler2000
Messages postés383Date d'inscriptionsamedi 29 janvier 2005StatutMembreDernière intervention 1 décembre 2008 5 déc. 2007 à 15:15
c'était pour tester mais sans succes, j'ai toujours le meme problème, c'est à cause de la boucle while. si je met un sleep au milieu de la boucle pas de problème mais c'est moche et ca ralentie la boucle pour rien !
J'ai fait ceci :
Dim Rnd As New Random()
For i As Integer = 0 To 49
ListBox1.Items.Add(String.Format("{0} {1}", Rnd.Next(0, 300), Rnd.Next(0, 300)))
Next i, ----
(Coloration syntaxique automatique par Kenji)
Les nombres dans un même couples sont différents à chaque fois.
__________
Kenji
While ou For ..., c'est une boucle.
Mais la boucle n'importe peu. C'est le premier passage qui est important.
Si lors du premier passage, il sont identique, ils le seront fortement pour les passages suivants ; et à l'inverse, si ils sont différents, les autres le sont.
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 5 déc. 2007 à 17:45
Bonsoir,
mécanisme connu et utilisé pour des tirages rapprochés :
1) Les nombres dans un tableau
2) tirage aléatoire d'un index (et on garde son contenu)
3) on intervertit le dernier item du tableau avec l'item déjà tiré
De cette manière : si le même index est tité 2 fois de suite, son contenu est forcément différent.
Il reste bien évident que :
- rien n'interdit que le hasard (mais ce sera alors du hasard) fasse qu'au 2ème tirage sorte le dernier index (donc même contenu qu'au 1er tirage
- que le 3ème tirage (si vraiment très rapproché dans le temps du tout 1er) risque alors d'être encore le même index et donc de rétablir le tableau tel qu'il était au tout début
C'est donc à toi de faire en sorte, sur la base de cet exemple de mécanisme, pour que la chose n'arrive pas. Un procédé simple consiiste à utiliser un compteur et à intervertir non avec le dernier index, mais avec celui, qui s'incrémente, correspondant au compteur.
Voilà ... c'est un peu plus compliqué que dit ici, mais facile à "capter" et c'est donc à toi de jouer...