Selection aléatoire.

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Selection aléatoire.

Message par Chris »

Un petit problème ou je coince.
C'est probablement tout simple, mais ça fait quatre heures que je bloque la-dessus.

Voilà.
J'ai une liste qui comporte 6 éléments. (Chemins d'accès à des images)

Il faut que je sélectionne, de manière aléatoire, chaque élément 4 fois.

Les éléments doivent être sélectionnés 4 fois, pas une de plus, pas une de moins.
Chaque élément ne doit pas être sélectionné plusieurs fois d'affilée

Le but, afficher chaque image 4 fois, à des positions aléatoires.

Je ne sais pas trop si vous avez compris ce que je veux dire, mais si quelqu'un a une idée....! :roll:
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Avec des compteurs pour chaque élément et des tests pour empêcher la répétition du choix d'une même image.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

je ferai comme ça !

une memoire pour retenir les chiffres tiré (soit un tableau,soit une liste, soit une structure )


tu attribues un numero par image (de 1 a 4)
a chaque tirage ,
(random(4)+1)
tu commence par regarder dans ta memoire si ce chiffre est deja sorti ,
si oui , on refait un tirage, (recursif eventuellement ou un bon vieux goto ! )
si non
tu met le resultat dans la liste (ta memoire )
et tu affiche l'image correspondante au chiffre tiré ! :D

heu ! 4 ou 6 c'est pareille , bref , c'est le principe quoi ! :D
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

C'est bien ce que j'avais pensé, mais au bout de quatres heures sur à peine dix lignes de code, je sens que j'ai la tête comme une citrouille!

Ca tombe bien, c'est bientôt Halloween :lol: #jaune

Je reprendrais ça demain :sleeping:
LeCyb
Messages : 273
Inscription : dim. 26/déc./2004 20:49

Message par LeCyb »

Voilà ce que j'ai pu faire en moins de 5 min, y'a probablement moyen de faire plus propre ou efficace mais bon.

Code : Tout sélectionner

NewList liste.s()

For i = 1 To 4
  AddElement(liste())
  liste() = "chemin1"
  AddElement(liste())
  liste() = "chemin2"
  AddElement(liste())
  liste() = "chemin3"
  AddElement(liste())
  liste() = "chemin4"
  AddElement(liste())
  liste() = "chemin5"
  AddElement(liste())
  liste() = "chemin6"
Next

Repeat
  rnd = Random(CountList(liste()) - 1)
  SelectElement(liste(), rnd)
  Debug liste()
  DeleteElement(liste())
Until CountList(liste()) = 0
Vive le thread-safe !
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

ça parait tellement évident maintenant, bien vu! :)
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Eh oui! :oops:

C'est le genre de bout de code tout con, mais qui peut te bouffer la vie, pour peu que tu commences à t'enerver dessus! :roll:

Merci!
Répondre