tirage aléatoire sans remise

tirage aléatoire sans remise - Ada - Programmation

Marsh Posté le 26-02-2006 à 20:33:36    

Salut!
Je voulais savoir si il était possible de faire avec ada un tirage aléatoire sans remise?!
En fait, je veux faire un tirage de chiffres de 1 à 9, où chaque chiffre n'apparaîtrait qu'une seule et unique fois : par exemple, je tire un premier chiffre dans les 9 proposé, disons le 7, et après je veux tirer aléatoirement un autre chiffre, mais qui serait forcément différent de 7!! Je sais que je peux faire un truc du genre "si chiffre = 7 alors recommence a me tirer le chiffre", mais je veux justement éviter ça, je veu faire un second tirage sur l'ensemble 1,2,3,4,5,6,8,9, puis le suivant sur le même moins le chiffre que j'aurai tiré avant, de façon à ce qu'au dernier tirage il n'ait pas le choix, qu'il puisse me tirer que celui qui reste et pas chercher dans l'ensemble de départ le seul chiffre qui n'a pas été encore tiré!
Et donc je me demandais si il existait une fonction qui permettrait de faire ça, restreindre l'ensemble sur lequel on fait le random à ceux qui ne sont pas encore sortis...
Si quelqu'un peut m'aider merci.


Message édité par mach-1 le 27-02-2006 à 11:03:54
Reply

Marsh Posté le 26-02-2006 à 20:33:36   

Reply

Marsh Posté le 27-02-2006 à 14:29:40    

Non, faut quand même pas réver.
 
A toi de la faire cette fonction. ;)

Reply

Marsh Posté le 27-02-2006 à 15:32:52    

le plus simple était de faire un tableau de N éléments, contenant les nombres 1 à N-1, d'intervertir aléatoirement N/2 fois, et de lire le tableau dans l'ordre

Reply

Marsh Posté le 05-03-2006 à 18:55:05    

JagStang > :??:  j'ai pas compris ; serait-il possible d'avoir une autre formulation de ta réponse JagStang ? stp !
 ou un bout de code, enfin n'importe quoi qui puisse parfaire ta réponse ?  :love:

Reply

Marsh Posté le 07-03-2006 à 15:00:28    

tu construit un tableau avec toutes les valeurs possibles, tu intervertis N/2 fois deux éléments de ton tableau aléatoirement, et tu lis le tableau dans l'ordre

Reply

Marsh Posté le 09-03-2006 à 11:59:16    

Et pourquoi ne pas faire ca simplement ?
 
A chaque fois qu'un nombre est tiré il est ajouté au tableau de taille 1..9.
 
Lors du tirage, tu regarde dans le tableau avec une boucle si le chiffre est déjà sorti, si oui tu fais un nouveau tirage et cela jusqu'à ce que tu tombes sur un chiffre qui n'a pas encore été tiré.
 
Quand ton tableau est plein c'est que tout tes chiffres on été tirés.

Reply

Marsh Posté le 09-03-2006 à 15:00:10    

pas efficace. vers la fin tu vas faire que tirer des nombres déjà tirés...

Reply

Marsh Posté le 10-03-2006 à 11:16:06    

jagstang a écrit :

tu construit un tableau avec toutes les valeurs possibles, tu intervertis N/2 fois deux éléments de ton tableau aléatoirement, et tu lis le tableau dans l'ordre


 
Et pourquoi pas en recursif: tu tires une case de 1..N, tu echanges l'element trouvé avec le premier element du tableau et ensuite tu rappelles ta procedure mais pour le tableau 2..N et ainsi de suite?

Reply

Marsh Posté le 11-03-2006 à 12:44:03    

c'est possible mais la récursivité n'est pas vraiment nécessaire


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed