1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| Sub test()
mot = Array("mot1", "mot2", "mot3")
a = UBound(mot) + 1 'a=3 pour 3 mots
'algo
x = a * (a - 1) * (a - 2) 'algo simple comme peau de bananne pour connaitre le nombre de possibilite de combinaison de 3 mots
MsgBox "il y a " & x & " posibilités pour les combinaisons de 3 mots selon l'algo "
'algo en boucle
For i = 1 To UBound(mot) - 1
x = a * (a - i)
Next
MsgBox "il y a aussi " & x & " posibilités pour les combinaisons de 3 mots selon l'algo calculé dans une boucle "
'
'
'testons voir avec une boucle laaaaaaaaaargement !!!!!!!!!!!!! superieurs aux possibilités et un dico
'
Set dico = CreateObject("scripting.dictionary")
For i = 1 To 100000 ' on boucle 100000 fois
re1:
a1 = mot(Round(Rnd * 2)) 'on choisi au hasard 1 mot
re2:
a2 = mot(Round(Rnd * 2)): If a2 = a1 Then GoTo re2 'on choisi au hasard un 2d mot si c'est le meme que le premier on rechoisi pour le 2d
re3:
a3 = mot(Round(Rnd * 2)): If a3 = a2 Or a3 = a1 Then GoTo re3 'on choisi au hasard un 3eme mot si c'est le meme que le 2d on rechoisi pour le 3eme
Randomize
'
dico(a1 & " : " & a2 & " : " & a3) = "" 'on ajoute au dico
'""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
'If dico.Count = x Then i = 100000'on sort des que l'on a atteint le nombre de possibilité
'""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Next
'
mess = "il y a toujours " & dico.Count & " posibilités pour les combinaison de 3 mots acec 100000 tours de boucle pour le dico " & vbCrLf & Join((dico.keys), vbCrLf)
'
mess = mess & vbCrLf & "pour les combinaisons de 2 il suffit de reprendre les items du dico en gardant que les 2 premiers"
MsgBox mess
End Sub |
Partager