Page 1 sur 1

pour 50 entitées

Publié : dim. 22/juin/2008 14:09
par chikun
:? je debute en basic, merci a qui pe me donner la routine pour attibuer un numero chaque fois different à 50 entitées... 8O en gros la routine du loto suffira

merci

Publié : dim. 22/juin/2008 14:29
par Ollivier
Une entité c'est un terme précis pour la 3D. Maintenant, je ne crois pas que ce soit cela que tu cherches :
- «On veut 50 variables numériques ayant une valeur entière différente entre 0 et 49 inclus»

1) On créée un domaine (tableau de 50 éléments)

Code : Tout sélectionner

Global Dim Project.L(49)
2) On attribue les 50 nombres respectifs aux 50 variables «Project»

Code : Tout sélectionner

For i = 0 To 49
  Project(i) = i
Next
3) On fait une boucle qui va mélanger 1000 fois les variables

Code : Tout sélectionner

For i = 1 To 1000
  Swap Project(Random(49) ), Project(Random(49) )
Next
4) On affiche le tout dans la fenêtre de déboguage :

Code : Tout sélectionner

For i = 0 To 49
  Debug Project(i)
Next
D'autres questions?

Publié : dim. 22/juin/2008 15:20
par Backup
voici la routine de base des chiffres du loto

Code : Tout sélectionner

Dim a ( 6)
RandomSeed(ElapsedMilliseconds()) ; initialise le generateur de nombre aleatoire
For i = 1 To 6 ; pour 6 fois (6 numero = une grille)
    a(i) = Random(48)+1  ; on tire un chiffre au hasard entre 1 et  49
    Debug  "numero :"+Str(i)+" = "+ Str( a(i)) ; afffiche le resultat :o)
Next 
End

Publié : dim. 22/juin/2008 23:39
par Frenchy Pilou
Et a routine du gros lot? :wink:

Publié : lun. 23/juin/2008 0:19
par Backup
Frenchy Pilou a écrit :Et a routine du gros lot? :wink:
si je savais la faire, je ferai partie du financement de Purebasic (entre autre) :D

Publié : lun. 23/juin/2008 6:35
par Thyphoon
Sauf que là avec les routines données vous pouvez tomber plusieurs fois sur le même numéro, alors que ça doit être impossible pour les numéro du loto...enfin je crois car j'y ai jamais joué !! lolllllllll :P

Edit: Je critique mais je proposais pas de code, alors voilà j'ai modifier le code de Dobro (c'est du vite fait) :P

Code : Tout sélectionner

Dim a ( 6)
RandomSeed(ElapsedMilliseconds()) ; initialise le generateur de nombre aleatoire
For i = 1 To 6 ; pour 6 fois (6 numero = une grille)
    Ok=0
    Repeat

    a(i) = Random(48)+1  ; on tire un chiffre au hasard entre 1 et  49
      Ok=1; Normalement c'est bon 
      For z=1 To i-1 ; Sauf si on a déjà cette valeur 
        If a(i)=a(z)
          Ok=0
        EndIf
      Next
    Until Ok=1;
    Debug  "numero :"+Str(i)+" = "+ Str( a(i)) ; afffiche le resultat :o)
Next
End

Publié : lun. 23/juin/2008 6:37
par Huitbit
J'ai codé comme Gargamel :oops: mais ça peut rapporter le gologolo :lol: :lol:

Code : Tout sélectionner

;pureloto
;auteur Huitbit
;pb 4.20
Dim  grille.b(7)  
Dim grille_joueur.b(6)  

;affichage
OpenConsole()
PrintN("tirage du loto")
Repeat
  compteur=0
  complementaire=0
  ;tirage initial
  For i=1 To 7
    grille(i)=1+Random(48)
  Next i
  ;correction
  For i=1 To 7
    For j=1 To i
      If i<>j
        While grille(i)=grille(j)
          grille(i)=1+Random(48)
        Wend
      EndIf
    Next j
  Next i
  
  ;choix des boules
  For i=1 To 6
    PrintN("Choix d'une case "+Str(i)+" ([entrer] pour valider ) ")
    choix$=Input()
    While Val(choix$)<1 Or  Val(choix$)>49
      PrintN("Choisissez une autre case "+Str(i)+" !")
      choix$=Input()
    Wend
    If i>1
      For j=1 To i-1
        While Val(choix$)= grille_joueur(j) 
          PrintN("Choisissez une autre case "+Str(i)+" !")
          choix$=Input()
        Wend
      Next j
      While Val(choix$)<1 Or  Val(choix$)>49
        PrintN("Choisissez une autre case "+Str(i)+" !")
        choix$=Input()
      Wend
    EndIf
    grille_joueur(i)=Val(choix$)
  Next i
  
  ;verification de la grille
  For i=1 To 7
    For j=1 To 6
      If grille(i)=grille_joueur(j)
        compteur=compteur+1
      EndIf
      If grille(7)=grille_joueur(j)
        complementaire=1
      EndIf
    Next j 
  Next i
  ;affichage des resultats
  PrintN("")
  PrintN("<<<<<<<<<<>>>>>>>>>>")
  PrintN("Numeros joues :")
  For i =1 To 6
    Print(Str(grille_joueur(i))+" / ")
  Next i
  PrintN("")
  PrintN("")
  PrintN("Numeros gagnants : ")
  For i =1 To 6
    Print(Str(grille(i))+" / ")
  Next i
  Print("compl : "+Str(grille(7)))
  PrintN("")
  PrintN("resultat :"+Str(compteur)+" bon(s) numero(s)")
  If complementaire=1
    PrintN("vous avez le complementaire!")
  EndIf
  PrintN("")
  PrintN("")
ForEver
CloseConsole()
End 
Hasta la vista !

Publié : lun. 23/juin/2008 7:16
par Backup
Thyphoon a écrit :Sauf que là avec les routines données vous pouvez tomber plusieurs fois sur le même numéro, alors que ça doit être impossible pour les numéro du loto...
exacte, j'avais omis ce petit detail :lol:

Publié : lun. 23/juin/2008 7:26
par Thyphoon
Dobro a écrit :
Thyphoon a écrit :Sauf que là avec les routines données vous pouvez tomber plusieurs fois sur le même numéro, alors que ça doit être impossible pour les numéro du loto...
exacte, j'avais omis ce petit detail :lol:
C'est peut être pour ça que tu n'as pas encore gagné au loto... tu te retrouvais a coché plusieurs fois la même case :lol:

Publié : lun. 23/juin/2008 7:49
par Backup
Thyphoon a écrit :
Dobro a écrit :
Thyphoon a écrit :Sauf que là avec les routines données vous pouvez tomber plusieurs fois sur le même numéro, alors que ça doit être impossible pour les numéro du loto...
exacte, j'avais omis ce petit detail :lol:
C'est peut être pour ça que tu n'as pas encore gagné au loto... tu te retrouvais a coché plusieurs fois la même case :lol:
:D

Publié : lun. 23/juin/2008 10:58
par Ar-S
Ah la française des boeufs :)

Publié : jeu. 25/sept./2008 16:25
par kerkael
Ollivier a écrit :

Code : Tout sélectionner

Global Dim Project.L(49)
For i = 0 To 49
  Project(i) = i
Next
For i = 1 To 1000
  Swap Project(Random(49) ), Project(Random(49) )
Next
For i = 0 To 49
  Debug Project(i)
Next
Super !
En fait, en Swapant Random(49) avec Random(49) tu demandes de prendre un élément au hasard, et d'échanger sa place avec un autre élément au hasard. Je comprends pourquoi il faut 1000 passages ...
Pour faire plus simple, il suffit de faire une boucle sur les 49 éléments et de les swaper au hasard.

Code : Tout sélectionner

For i = 0 To 49
  Swap Project(i), Project(Random(49))
Next 
Ainsi on est certain que chaque élément a été mélangé au moins une fois. Si on trouve que le mélange n'est pas suffisant, on fait 2 fois ce mélange. C'est plus efficace que de faire 1000 passages.

Code : Tout sélectionner

For passages=1 to 2
  For i = 0 To 49
    Swap Project(i), Project(Random(49))
 Next
Next 

Publié : jeu. 25/sept./2008 16:27
par jbernard13
le loto va changé c'est 5 numero maintenant et plus 6