Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[WDxx] Comment utiliser correctement Hasard[] ?

5 réponses
Avatar
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

5 réponses

Avatar
Gilles
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.
Avatar
Firetox
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
@+
Avatar
Firetox
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" a écrit dans le message de
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
@+



Avatar
GpEp
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" a écrit dans le message de
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
@+





Avatar
patrice
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" a écrit dans le message de
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
@+