randomize ? ou condition foireuse

randomize ? ou condition foireuse - VB/VBA/VBS - Programmation

Marsh Posté le 08-03-2009 à 17:23:09    

Code :
  1. Imports System.Threading
  2. Module Module1
  3.     Sub Main()
  4.         Dim nombre, de1, de2, de3, de4, de5, de6, cpt As Integer
  5.         Randomize()
  6.         Console.WriteLine("Simulation de lancer de 6 dés" )
  7.         Console.WriteLine("Combien de fois voulez vous simuler le lancé de 6 dés ?" )
  8.         nombre = Console.ReadLine()
  9.         While nombre > 0
  10.             de1 = 1 + Rnd() * 6
  11.             de2 = 1 + Rnd() * 6
  12.             de3 = 1 + Rnd() * 6
  13.             de4 = 1 + Rnd() * 6
  14.             de5 = 1 + Rnd() * 6
  15.             de6 = 1 + Rnd() * 6
  16.             nombre -= 1
  17.             Console.WriteLine("tirage numéro {0} en cours ", nombre)
  18.             'Console.Write(" {0} {1} {2} {3} {4}{5}", de1, de2, de3, de4, de5, de6)
  19.             If de1 = de2 = de3 = de4 = de5 = de6 Then
  20.                 cpt = cpt + 1
  21.             End If
  22.         End While
  23.         Console.WriteLine("Les dés ont tous eu la même valeur {0} fois", cpt)
  24.         Thread.Sleep(2000)
  25.     End Sub
  26. End Module


 
voici un algorithme tout con que j'avais en C et que j'ai passé en Vb
Problème : Même sur 1000000 tirages, je n'obtiens jamais tous les dés égaux, alors que le même algorithme en C me donne environ 130 fois les dés tous égaux. :aie:
 
Quelqu'un peut t'il m'aider ? Je débute en Vb (2008) (Comme si cela ne se voyait pas :mouarf: )

Reply

Marsh Posté le 08-03-2009 à 17:23:09   

Reply

Marsh Posté le 08-03-2009 à 22:12:11    

Citation :

If de1 = de2 = de3 = de4 = de5 = de6 Then

Je n'ai jamais utilisé cette syntaxe compacte en VB, donc j'ai un doute. A la place, j'écrirais :

If de1 = de2 and de2 = de3 and de3 = de4 and de4 = de5 and de5 = de6 Then

C'est un chouia plus long, mais pas tant que ça, et et c'est une programation traditionnelle moins risquée.
 
D'autre part, la variable cpt n'est pas initialisée explicitement. Bon on peut penser que VB le fera tout seul, mais l'intialiser ne demande pas beaucoup d'effort et cela évite de prendre un autre risque.

Reply

Marsh Posté le 08-03-2009 à 22:21:54    

Ok, merci
Mauvaise habitude de C :/

Reply

Marsh Posté le 09-03-2009 à 14:23:21    

Pourquoi ne pas utiliser un tableau de dés plutôt que 6 variables différentes !?


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed