[WDxx] Comment utiliser correctement Hasard[] ?

Le
GpEp
Bonjour,

J'essaye d'utiliser la commande Hazard pour générer 5 numéros
aléatoires à partir d'une yable contenant des chiffres allant de 1 à 80
par exemple
Quelque soient les codes utilisés j'obtiens régulièrement des doubles
Ou est mon erreur dans l'utilisation de cette commande ?
Comment empêcher l'obtention de ces doubles ?

ResHasard est un entier

InitHasard()
POUR Ih = 1 A 5
ResHasard = Hasard(1, Table1..Occurrence)
ListeAjoute(Liste1,NumériqueVersChaîne(ResHasard, "05d"))
Temporisation(125) // pour dépasser 1 seconde
FIN

POUR Ih = 1 A 5
InitHasard()
ResHasard = Hasard(1, Table1..Occurrence)
ListeAjoute(Liste1,NumériqueVersChaîne(ResHasard, "05d"))
Temporisation(125) // pour dépasser 1 seconde
FIN

InitHasard()
POUR Ih = 1 A 5
ResHasard = Hasard(1, Table1..Occurrence)
ListeAjoute(Liste1,NumériqueVersChaîne(ResHasard, "05d"))
// sans temporisation
FIN

POUR Ih = 1 A 5
InitHasard()
ResHasard = Hasard(1, Table1..Occurrence)
ListeAjoute(Liste1,NumériqueVersChaîne(ResHasard, "05d"))
// sans temporisation
FIN

Cordialement
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Gilles
Le #20233551
GpEp a formulé ce samedi :
Bonjour,

J'essaye d'utiliser la commande Hazard pour générer 5 numéros aléatoires à
partir d'une yable contenant des chiffres allant de 1 à 80 par exemple
Quelque soient les codes utilisés j'obtiens régulièrement des doubles
Ou est mon erreur dans l'utilisation de cette commande ?
Comment empêcher l'obtention de ces doubles ?



Faire une boucle tantque en ayant mémorisé les nombres déjà tirés.
Firetox
Le #20233541
Bonjour,

InitHasard()


initHasard(heuresys())
permet de ne pas avoir la meme sequence a chaque lancement

POUR Ih = 1 A 5
ResHasard = Hasard(1, Table1..Occurrence)
ListeAjoute(Liste1,NumériqueVersChaîne(ResHasard, "05d"))


a remplacer par
si listeCherche(liste1,NumériqueVersChaîne(ResHasard, "05d") = -1 alors
ListeAjoute(Liste1,NumériqueVersChaîne(ResHasard, "05d"))
fin
pour eviter d'avoir les memes (les probalités sont ce quelles sont et on
peux avoir le mem tirage)
evite d'avoir le meme tirage dans la liste on aura aucun doublon

bon dev
@+
Firetox
Le #20233671
oups un coup de doigts sur enter avant la fin

lh est un entier = 1
InitHasard()
Tantque Ih <= 5
ResHasard = Hasard(1, Table1..Occurrence)
si listeCherche(liste1,NumériqueVersChaîne(ResHasard, "05d") = -1 alors
ListeAjoute(Liste1,NumériqueVersChaîne(ResHasard, "05d"))
lh++
fin
Temporisation(125) // pour dépasser 1 seconde
FIN

on reste sur le tantque on a pas ajouter une valeur dans la liste

bon dev
@+

Firetox

"Firetox" news:4abe6090$0$16779$
Bonjour,

InitHasard()


initHasard(heuresys())
permet de ne pas avoir la meme sequence a chaque lancement

POUR Ih = 1 A 5
ResHasard = Hasard(1, Table1..Occurrence)
ListeAjoute(Liste1,NumériqueVersChaîne(ResHasard, "05d"))


a remplacer par
si listeCherche(liste1,NumériqueVersChaîne(ResHasard, "05d") = -1 alors
ListeAjoute(Liste1,NumériqueVersChaîne(ResHasard, "05d"))
fin
pour eviter d'avoir les memes (les probalités sont ce quelles sont et on
peux avoir le mem tirage)
evite d'avoir le meme tirage dans la liste on aura aucun doublon

bon dev
@+



GpEp
Le #20234981
Merci infiniment à vous deux et particulièrement à Firetox
Cordialement

Firetox a exprimé avec précision :
oups un coup de doigts sur enter avant la fin

lh est un entier = 1
InitHasard()
Tantque Ih <= 5
ResHasard = Hasard(1, Table1..Occurrence)
si listeCherche(liste1,NumériqueVersChaîne(ResHasard, "05d") = -1 alors
ListeAjoute(Liste1,NumériqueVersChaîne(ResHasard, "05d"))
lh++
fin
Temporisation(125) // pour dépasser 1 seconde
FIN

on reste sur le tantque on a pas ajouter une valeur dans la liste

bon dev
@+

Firetox

"Firetox" news:4abe6090$0$16779$
Bonjour,

InitHasard()


initHasard(heuresys())
permet de ne pas avoir la meme sequence a chaque lancement

POUR Ih = 1 A 5
ResHasard = Hasard(1, Table1..Occurrence)
ListeAjoute(Liste1,NumériqueVersChaîne(ResHasard, "05d"))


a remplacer par
si listeCherche(liste1,NumériqueVersChaîne(ResHasard, "05d") = -1 alors
ListeAjoute(Liste1,NumériqueVersChaîne(ResHasard, "05d"))
fin
pour eviter d'avoir les memes (les probalités sont ce quelles sont et on
peux avoir le mem tirage)
evite d'avoir le meme tirage dans la liste on aura aucun doublon

bon dev
@+





patrice
Le #20236661
gaffe quand même , si ton "table1..occurence" est trop prés de 5, y plus
de chance que ca boucle que de te remplir ton tableau.
Pour éviter ce probleme :
1- remplit un tableau "indice" de 1 à table1..occurence
2- et pioche au harsard dedans:
indice_hasard=hasard(1,indice..occurence)
reshasard=indice[indice_hasard]
3- puis supprime celui que tu as pris pour ne pas le re-piocher
tableausupprime(indice,indice_hasard)
4- boucle à l'étape 2 autant que tu veux et indice..occurence>=1

GpEp a écrit :
Merci infiniment à vous deux et particulièrement à Firetox
Cordialement

Firetox a exprimé avec précision :
oups un coup de doigts sur enter avant la fin

lh est un entier = 1
InitHasard()
Tantque Ih <= 5
ResHasard = Hasard(1, Table1..Occurrence)
si listeCherche(liste1,NumériqueVersChaîne(ResHasard, "05d") = -1
alors
ListeAjoute(Liste1,NumériqueVersChaîne(ResHasard, "05d"))
lh++
fin
Temporisation(125) // pour dépasser 1 seconde
FIN

on reste sur le tantque on a pas ajouter une valeur dans la liste

bon dev
@+

Firetox

"Firetox" news:4abe6090$0$16779$
Bonjour,

InitHasard()


initHasard(heuresys())
permet de ne pas avoir la meme sequence a chaque lancement

POUR Ih = 1 A 5
ResHasard = Hasard(1, Table1..Occurrence)
ListeAjoute(Liste1,NumériqueVersChaîne(ResHasard, "05d"))


a remplacer par
si listeCherche(liste1,NumériqueVersChaîne(ResHasard, "05d") = -1 alors
ListeAjoute(Liste1,NumériqueVersChaîne(ResHasard, "05d"))
fin
pour eviter d'avoir les memes (les probalités sont ce quelles sont et
on peux avoir le mem tirage)
evite d'avoir le meme tirage dans la liste on aura aucun doublon

bon dev
@+









Publicité
Poster une réponse
Anonyme