Randomize

Résolu
cs_Kite37 Messages postés 242 Date d'inscription lundi 6 mars 2006 Statut Membre Dernière intervention 17 janvier 2018 - 14 avril 2006 à 19:06
cs_Kite37 Messages postés 242 Date d'inscription lundi 6 mars 2006 Statut Membre Dernière intervention 17 janvier 2018 - 15 avril 2006 à 10:40
Hello world !
Bon voici mon problème : je suis sur la création d'un jeu, et il me faut un moyen d'obtenir 6 nombre aléatoires compris entre 1 et 16 inclus, tous différents les uns des autres.
Voici mon code actuel, qui me pose bien des problèmes car je n'arrive que rarement a obtenir les 6 nombres différents attendu :

randomize()
For i = 0 To 6
inutilisable(i) = CInt(Int((Rnd() * 16) + 1))
Next
For i = 1 To 6
For i2 = 1 To 6
If i <> i2 Then
If inutilisable(i) = inutilisable(i2) Then
inutilisable(i2) = CInt(Int((Rnd() * 16) + 1))
End If
End If
Next i2
Next i

comme vous pouvez le voir, ce code n'est pas vraiment super ... même si dans certains cas il s'avère utile, il peut arriver qu'il affecte a une des cases du tableau une valeur passées, et donc sans possibilité de changement.

Quelqu'un pourrait-il me dépanner?
merci d'avance ^_^ #Un cerveau Lent en perdition#

3 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
15 avril 2006 à 03:34
salut








' nécessite un Command1

Option Explicit

'

Dim aTabSeries(1 To 16) As Integer

Dim aSuites() As Integer

'

'

Private Sub Form_Load()

Randomize

End Sub

'

'

Private Sub Command1_Click()

' init

Dim i As Integer, iRnd As Integer

For i = 1 To 16

aTabSeries(i) = i

Next i



' redim résultats

ReDim aSuites(1 To 6)



Dim Message As String: Message = "" '<- pour l'exemple



' on créé le tableau de résultat en "désactivant" ceux trouvés

For i = 1 To 6

aSuites(i) = 0

While aSuites(i) = 0

iRnd = Int (16 * Rnd) + 1)

If aTabSeries(iRnd) <> 0 Then

aSuites(i) = aTabSeries(iRnd)

aTabSeries(iRnd) = 0

Message = Message & CStr(aSuites(i)) & vbCrLf

End If

Wend

Next i



MsgBox Message

End Sub





<small> Coloration
syntaxique automatique [AFCK]</small>
3
cs_Kite37 Messages postés 242 Date d'inscription lundi 6 mars 2006 Statut Membre Dernière intervention 17 janvier 2018
14 avril 2006 à 19:08
oups dsl du flood mais dans la premier if, il s'agit de : For i 1 To 6 et non pas For i 0 To 6
voilà ^ ^
0
cs_Kite37 Messages postés 242 Date d'inscription lundi 6 mars 2006 Statut Membre Dernière intervention 17 janvier 2018
15 avril 2006 à 10:40
woaw merci excellent système qui marche a la perfection :) et dire qu'a une variable près j'avais tenté ce truc ... ^ ^'
merci beaucoup de votre aide vous m'ôtez une bonne épine du pied ^ ^

cordialement, #un cerveau lent (©)#
0
Rejoignez-nous