Randomize

POPO -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
Dans visual studio.En n VB
J'utilise la fonction Randomize comme suit :

Sub command1_click

Dim TT As Byte
Randomize
TT = Int((6 * Rnd) + 1)


If TT = 1 Then
  Label1 = a + T1 + a2 + T2
  Label2 = b + T3 + b2 + T2
  Label3 = c + T3 + c2 + T1 + d
  Label4 = e + T2 + d2 + T3
  Label5 = f + T2 + e2 + T1
  Label6 = g + T1 + g + T3
 

ElseIf TT = 2 Then
  Label1 = a + T3 + a2 + T2
  Label2 = b + T3 + b2 + T1
  Label3 = c + T2 + c2 + T3 + d
  Label4 = e + T2 + d2 + T1
  Label5 = f + T1 + e2 + T3
  Label6 = g + T1 + g + T2
ETC..Jusquà TT=6
(T1,T2,T3,a,b,c,d,e,f a2,b2,c2,d2,e2,g sont des variables string)


Or il arrive que TT prenne la même valeur 2 fois de Suite
Donc il ne ne se passe rien : les labels ne change pas.
Comment évité cela et que TT prenne une valeur différetente de la précédente à chaque clic sur command1.
Merci de m'éclairer !

5 réponses

  1. POPO
     
    je ne prendrais pas le chiffre répéter en compte
    mais en vb ça donne quoi ?
    1
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Et comment ferais pour ne pas le prendre en compte ?

      En gros...

      1 - Tu jettes le Dé....
      2 - Tu mémorise sa valeur...
      3 - Tu jettes à nouveau le Dé ... tu le compares à la valeur précédente...
      Si identique.. .... et retour à l'étape 1
      Si différent.. tu fais ce que tu as à faire... et retour à l'étape 1
      0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      une autre possibilité, c'est, à chaque fois, de réduire le nombre de faces du dé.
      dans un cas comme dans l'autre, c'est à toi de résoudre l'exercice et de trouver comment programmer cela.
      0
  2. LULU
     
    1 Dim TT As Byte
    Randomize ' La ligne if.....1 n'est pas appliquée au premier click sur command1
    ( ' Le Form vient d'apparaitre avec des labels prédéterminés)
    ' Z n'a donc pas encore de valeur
    TT = Int((6 * Rnd) + 1) ' Cette ligne n'est donc appliquée qu'au deuxième click.
    If TT = Z Then GoTo 1 'Z a pris alors une valeur.
    Z = TT

    Je pense que c'est l'explication.
    En tout cas ça marche
    Qu'en penses-tu ?!
    1
  3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,

    Comme on connais les valeurs, c'est simple.
    Exemple vite fait :
    Sub essaialea()
        Dim List(1 To 6) As Integer, Resultat(1 To 6)
        Dim Count As Integer
        Dim i As Integer, n As Integer, j As Integer
        'INITIALISATION VARIABLES
        For i = 1 To 6
            List(i) = i
        Next
        Count = 6
        Randomize Timer
        'TRAITEMENT
        For n = 0 To Count - 1
            i = Int(1 + (Count - n) * Rnd)
            j = j + 1
            Resultat(j) = List(i)
            List(i) = List(Count - n)
        Next
        'RESTITUTION
        Dim msg As String
        For i = 1 To 6
            msg = msg & " Résultat(" & i & ") : " & Resultat(i) & vbCrLf
        Next
        MsgBox msg
    End Sub

    1
  4. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour,
    c'est un peu comme quand tu lances un dé: comment éviter de retomber sur une face où il est déjà tombé?
    dans quel contexte fais-tu ce travail? que veux-tu réellement obtenir?
    ne suffit-il pas de cliquer quelques fois de plus?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. POPO
     
    Il s'agit de modifier des labels ( contenant chacun un vers) en fonction du tirage aléatoire.

    Evidemment je peux clicker plusieurs fois mais ça donne un sentiment de blocage et d'imperfection.(Il s'agit de "poésies")
    C'est pas possible de repatrir à chaque click sur une valeur différente de la précédente ?
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      c'est bien sûr possible.
      comment ferais-tu avec un dé?
      0