Page 1 of 1

[RESOLU] mélange de cartes

Unread postPosted: 14 Apr 2012, 13:05
by proghy
Bonjour, j'aimerais créer un algorithme pour mélanger un paquet de cartes. J'en ai trouvé un qui tire deux nombre aléatoires et inverse les cartes des numéros correspondant mais il est un peu lent. Auriez-vous une idée pour qu'il soit plus rapide, ou un algorithme différent ? En cherchant sur internet je suis tombé sur des exercices de polytech et je n'ai pas compris grand chose. Merci

For(C,1,56)
randInt(1,56)->A
randInt(1,56)->B
L6(A)->D
L6(B)->L6(A)
D->L6(B)
End

Re: mélange de cartes

Unread postPosted: 14 Apr 2012, 14:45
by Persalteas
A priori, tu as fais le truc le plus simple et le plus efficace. Il y a peut-être d'autres moyens, mais surement plus lourds.

L6 contient 56 numéros de 1 a 56, à la base ?

Re: mélange de cartes

Unread postPosted: 14 Apr 2012, 15:01
by critor
Là, la complexité du mélange est directement proportionnelle à la longueur de la liste (ici, 56: on passe dans la boucle 56 fois).

Ce n'est donc à priori pas mauvais du tout, et je doute que l'on puisse faire foncièrement mieux sans altérer la qualité du mélange...

Re: mélange de cartes

Unread postPosted: 14 Apr 2012, 15:06
by proghy
Oui, L6 contient 56 numéros. Je pensais qu'il y aurait moyen de faire un mélange qui utilise moins de nombres aléatoires (il me semble avoir entendu que c'est ce qui prends du temps), peut-être avec une fonction qui change selon le premier nombre aléatoire tiré et adopte un comportement irrégulier, mais je n'ai pas le niveau en maths... Puisque vous pensez que mon algorithme est assez efficace, je vais surement calculer la liste de nombre aléatoires pendant l'écran de présentation du programme. Merci de votre aide.

Re: mélange de cartes

Unread postPosted: 14 Apr 2012, 17:04
by Adriweb
Le plus court possible, apparement :

Code: Select all
:seq(X,X,1,56->L1
:rand(56->L2
:SortA(L2,L1


( http://z4.invisionfree.com/TIFreakware/index.php?showtopic=1177&st=0, numéro 19)

Re: mélange de cartes

Unread postPosted: 14 Apr 2012, 17:41
by proghy
Merci Adriweb. Super, c'est environ 2x plus rapide !

Re: [RESOLU] mélange de cartes

Unread postPosted: 14 Apr 2012, 20:08
by Persalteas
O_O

Waw, j'aurais été a des années lumières d'y penser...

(par contre je n'ai pas la permission de lire ton lien selon TIFW)