Bonsoir,
La méthode proposée par Yat, poste #25, est très bien. Si tu la comprends, pas besoin de chercher plus loin...
Cordialement,
-----
Bonsoir,
La méthode proposée par Yat, poste #25, est très bien. Si tu la comprends, pas besoin de chercher plus loin...
Cordialement,
Même celle de yatt #25, je ne la comprends pas et
ta formule est optimisé comme tu l'indique et m'intéresse, mais afin de la comprendre j'ai besoin de la voir dans son ensemble comme l'as fait yatt dans le post#20 pour le precedent probléme (je veux dire le premier), j'ai juste besoin du détail ligne par ligne, sinon je nage complétement la tête sous l'eau.
Cordialement
je viens de ressayé avec ce que donne yat post#25 mais j'ai encore moins de détail et c'est pire qu'avec la tienne #29, car en réalité ce n'est pas un probléme de formule mais le probléme c'est plutôt mon niveau de math, pour preuve j'en suis rabaissé a demander le detail ligne par ligne.
Si on me donne ça => C(49-9 , 6)
j'arrive encore a tout fausser, et me planter jusqu'a obtenir des résultats a virgule ! ce qui n'est pas normal !
alors que si on me montre ça :
C(49-9 , 6) => (40*39*38*37*36*35)/(6*5*4*3*2) = 3838380
C(49-17, 5) => (32*31*30*29*28)/(5*4*3*2) = 201376
C(49-27, 4) => (22*21*20*19)/(4*3*2) = 7315
C(49-35, 3) => (14*13*12)/(3*2) = 364
C(49-44, 2) => (5*4)/2 = 10
C(49-48, 1) => 1 = 1
total 4047446
--------------------------
il n'y a plus aucune erreur possible
Peut tu faire comme ci dessus pour ce que tu m'explique en #29 stp mmy
merçi
Cordialement
Après réflexion, partir d'un côté ou de l'autre ne change pas grand chose...Même celle de yatt #25, je ne la comprends pas et
ta formule est optimisé comme tu l'indique et m'intéresse, mais afin de la comprendre j'ai besoin de la voir dans son ensemble comme l'as fait yatt dans le post#20 pour le precedent probléme (je veux dire le premier), j'ai juste besoin du détail ligne par ligne, sinon je nage complétement la tête sous l'eau.
Cordialement
Alors, la méthode de Yat, presque ligne par ligne
On commence par i=49-6, n = 1 (c'est à dire C(49-i, 6) = C(6,6))
n est plus petit que 4047446, tu continues
i =i-1
n = n (49-i)/(49-6-i)
Tu obtiens 7, puis 28, puis ...
Après quelques tours de boucle, tu trouves, quand i vaut 8, que n vaut 4496388, c'est trop grand.
Le premier numéro est 9, tu reviens en arrière, le n d'avant valait 3838380, tu soustrais cette valeur de 4047446, résultat 209066
Tu recommences la même chose pour le nombre suivant, en comparant à 209066, et en changeant la boucle par
i =i-1
n = n (49-i)/(49-5-i)
Et l'initialisation par i=49-5, n=1
et ainsi de suite pour les autres numéros, en changeant le 5 par 4 puis par 3...
Ca fait un an que je n'ai pas touché à php, sinon ça aurait été plus rapide de l'écrire direct en php, ça doit faire moins de 10 lignes!
Cordialement,
Bonjour
je reprends ou en etais hier
C(49-i, 6)
(43*42*41*40*39*38) = 4389446880 / (6*5*4*3*2*1)
resultat 1er ligne => 6096454
Ensuite je n'ai pas reussi
(49-i)/(49-6-i)
cordialement
Dans le message #34, l'algo démarre avec i=43, et i décroit ensuite
Mais comme on prend C(49-i, 6), la première valeur est C(49-43,6) = C(6,6) = 1
Cdlt
Dernière modification par invité576543 ; 13/10/2006 à 15h27.
je n'ai pas bien commencer ?
donc la 1er ligne serais
(6*6*6*6*6*6) = 46656
ensuite si j'ai bien compris comme 46656 est plus petit que 4047446 on continue avec
C(49-43-i) soit (5*5*5*5*5*5) = 15625
C(49-43, 6) = 1
ensuite C(49-42, 6) = 7
ensuite C(49-41, 6) = 28
ensuite C(49-40, 6) = 84
ensuite C(49-39, 6) = 210
ensuite C(49-38, 6) = 462
ensuite C(49-37, 6) = 924
ensuite C(49-36, 6) = 1716
ensuite C(49-35, 6) = 3003
ensuite C(49-34, 6) = 5005
ensuite C(49-33, 6) = 8008
ensuite C(49-32, 6) = 12376
ensuite C(49-31, 6) = 18564
il faut arriver a 4047446 ?
Ben oui, mais on sait bien que c'est 9! Faudra donc quelque chose comme 35 lignes. Mais dans ton code ce sera juste une boucle.
En langage "avec les mains" (pas le temps de me coltiner la syntaxe php)
d ← 4047446
pour k de 6 à 1
n ← 1
i ← 49 - k
tant que n<d
i ← i-1
n ← n*(49-i)/(49-k-i)
fin tant que
res[k] ← i+1
d ← d - n * (49-k-i)/(49-i)
fin pour
Aux erreurs de détail près, a doit être ça...
Cordialement,
j'ai bien reussi a arriver jusque là :
(40*39*38*37*36*35) / (6*5*4*3*2*1) => 3838380
(41*40*39*38*37*36) / (6*5*4*3*2*1) => 4496388
a partir de là comment obtient t-on que le 1er chiffre c'est 9 ?
Cordialement
ah je fesait une soustraction ! trés bien
je continue pour trouver le 2eme nombre avec :
je commence à
(5*4*3*2*1) / (5*4*3*2*1) => 1
(6*5*4*3*2) / (5*4*3*2*1) => 6
(7*6*5*4*3) / (5*4*3*2*1) => 21
jusqu'a ce qu je dépasse 209066 et même principe que le 1er, si je suis toujours dans le bon ?
Cordialement
Ouaip.......................ah je fesait une soustraction ! trés bien
je continue pour trouver le 2eme nombre avec :
je commence à
(5*4*3*2*1) / (5*4*3*2*1) => 1
(6*5*4*3*2) / (5*4*3*2*1) => 6
(7*6*5*4*3) / (5*4*3*2*1) => 21
jusqu'a ce qu je dépasse 209066 et même principe que le 1er, si je suis toujours dans le bon ?
Cordialement
d'accord d'accord je continue et là j'ai :
(32*31*30*29*28) / (5*4*3*2*1) => 201376
(33*32*31*30*29) / (5*4*3*2*1) => 237336
soit le nombre 32 ? au lieu de 17 ?
(9-17-27-35-44-48)
tu veux dire que de C( ,6) on passe a C( ,4) directement
ce qui donnerais quelque chose de cet ordre :
(4*3*2*1) / (4*3*2*1) = 1
cordialement
Désolé, j'ai mal lu hier soir (je fais dix choses à la fois, entre le forum et d'autres choses... ).
Ton calcul était correct. Tu as juste oublié de faire la différence avec 49. 49-32 ça fait bien 17.
Cdlt,
bonjour mmy
La formule est assimilé et comprise à 100%
j'ai bien reussi a retrouver tous les numéros de 1 a 6.
Je m'en suis douté que t'etais sollicité sur d'autre post.
je dev les deux script php correspondant a ces deux formule et quand c'est fini je l'ai posterais, pour ceux qui a l'avenir pourrais s'en servir.
Tout est bien qui finis bien.
Je me rends compte que ce n'etais pas si dificile, mais quand on a pas la methodologie, on hesite a plusieurs reprise
Par contre en travaillant hier soir, je me suis rendu compte d'une chose sur laquelle j'avoue ne pas avoir de réponse, as tu une idée :
A l'euromillion on peut joué minimum 2 étoile et maximum 9 étoile, et quand on observe le tableau cela donne :
(9*8)/(2*1) = 36
(9*8*7)/(3*2*1) = 84
(9*8*7*6)/(4*3*2*1) = 126
(et c'est là que c'est bizzare)
(9*8*7*6*5)/(5*4*3*2*1) = 126
(9*8*7*6*5*4)/(6*5*4*3*2*1) = 84
(9*8*7*6*5*4*3)/(7*6*5*4*3*2*1) = 36
(9*8*7*6*5*4*3*2)/(8*7*6*5*4*3*2*1) = 9
(9*8*7*6*5*4*3*2*1)/(9*8*7*6*5*4*3*2*1) = 1
Comment le nombre de possibilté peut il réduire au lieu d'augmenter ?
si tu as une idée
Cordialement
Bonjour j'avais reussi a appliquer sur le précédent probléme la formule (C6,6).
Et je viens de passé au chiffre superieur avec (C8,8)n mais aprés plusieurs essai, la methode (C6,6) ne fonctionne plus
pour (C7,7) et (C8,8).
Dans mon exemple je travaille avec le (C8,8) :
Indice total 450978066-65695084 = 385282982
et je fait exactement pareille mais j'ai un résultat incohérent.
cela me donne
(C8,8) = 377348994
(C8,8-1) = 6724520
(C8,8-2) =1107568
(C8,8-3) =98280
(C8,8-4) =3060
(C8,8-5) =560
ensuite 560-560 donne 0
ce qui fait que je n'ai que 6 correspondance au lieu de 8.
la formule est différente ?, merçi
Cordialement
J'ai déplacé ton message dans l'ancienne dicussion, cela n'avait aucun sens d'ouvrir un nouveau fil alors que ta question est directement liée à ce fil (et donc de ce fait totalement incompréhensible en dehors de son contexte).
Bonjour,
Ce que tu fais ne m'est pas clair... La notation (C6,6) n'avait pas été utilisée avant...
Il semble que tu passes à 8 tirages parmi 49, mais ce serait plus simple si tu détaillais plus.
Cordialement,
bonsoir mmy
j'essai donc de faire la même chose cet fois avec (C9,9) :
Indice total
Nombre de combinaison possible avec
9 boule = 745520860465920
le numéros de combinaison est 1153321843
L'indice est donc 901133791
cela me donne
(C9,9) = 14970656 soit la boule numero 4
(C9,9-1) = 1086500 soit la boule numero 16
(C9,9-2) = 198470 soit la boule numero 22
(C9,9-3) = 21370 soit la boule numero 24
(C9,9-4) = 1021 soit la boule numero 28
(C9,9-5) = 20 soit la boule numero 35
ensuite 20-20 donne 0
ce qui fait que je n'obtient que 6 sur 9.
aprés quelques dizaine de test différent j'ai remarqué que j'avais ce probléme en fonction du numero de combinaison utilisé par exemple
avec la Combinaison : 24-25-26-27-28-29-30-31-32 toujours (C9,9)
et l'indice 2051331085 le probléme disparait.
Cordialement
je viens de retester le second exemple par prudence !
Id combinaison : 2051331085
1er Indice fixé a 745520860465920-2051331085=3124549
et j'obtient :
2042975 => le 1er numéro est le 24
735471 => le 2eme numéro est le 25
245157 => le 3eme numéro est le 26
74613 => le 4eme numéro est le 27
20349 => le 5eme numéro est le 28
4845 => le 6eme numéro est le 29
969 => le 7eme numéro est le 30
153 => le 8eme numéro est le 31
17 => le 9eme numéro est le 32
Et ce qui m'intrigue c'est comment une formule peut-elle fonctionner pour certaines combinaison et pas pour d'autre, c'est quand même illogique.
Désolé j'ai confondu deux grille que j'avais dans ma feuille excel et il y-a une erreur sur le 1er exemple, le numéro de combinaison 1153321843 n'est pas le bon, c'est 1153321842 je recommence :
Nombre de possibilité : 2 054 455 634
Numéro de combinaison : 1 153 321 842
Indice a soustraire : 901 133 792
Pour (C9,9)
(45*44*43*42*41*40*39*38*37) / (9*8*7*6*5*4*3*2*1) = 886163135
Pour (C9,9-1)
(33*32*31*30*29*28*27*26) / (8*7*6*5*4*3*2*1) = 13884156
Pour (C9,9-2)
(27*26*25*24*23*22*21) / (7*6*5*4*3*2*1) = 888030
Pour (C9,9-3)
(25*24*23*22*21*20) / (6*5*4*3*2*1) = 177100
Pour (C9,9-4)
(21*20*19*18*17) / (5*4*3*2*1) = 20349
Pour (C9,9-5)
(14*13*12*11) / (4*3*2*1) = 1001
Pour (C9,9-6)
(6*5*4) / (3*2*1) = 20
Pour (C9,9-7)
(2*1) / (2*1) = 1
et ensuite 1-1=0 comment continuer avec 0 comme indice sachant qu'il reste un dernier numéro a trouver, il s'agit du 49
car on a déja récuperer respectivement 4,16,22,24,28,35,43 et 47.
Cordialement
Bonjour,
C'est normal, à 0 correspond 49-0 = 49! Si je reprend la formule (sur 6, mais l'extension à 8 est claire)
C(49-k1, 6) + C(49-k2, 5) + C(49-k3, 4) + C(49-k4, 3) + C(49-k5, 2) + C(49-k6, 1)
on voit que pour 49 on a C(49-49, 1) = C(0,1) = 0
Il faut d'ailleurs faire attention dans l'algo! Pour la dernière combinaison (44, 45, 46, 47, 48, 49) le numéro est
C(49-44, 6) + C(49-45, 5) + C(49-46, 4) + C(49-47, 3) + C(49-48, 2) + C(49-49, 1)
= C(5, 6) + C(4, 5) + C(3, 4) + C(2, 3) + C(1, 2) + C(0, 1)
= 0 + 0 + 0 + 0 + 0 + 0
Il faut faire attention que dans le programme C(n, p) = 0 si p>n
Dans le programme inverse, pareil il faut qu'au 0 corresponde le plus grand nombre possible à la position concernée.
Cordialement,
Bonjour
Bien dans ce cas je vais tacher de remettre de l'ordre dans la fonction php en modifiant ceux que tu viens de m'expliquer, je t'en remercie bien d'ailleurs.
Cordialement
Bonjour, je suis nouveau sur le forum.
Cela fait plusieurs années que je m’intéresse au loto. La formule que vous présentez pour trouver le numéro "d'ordre" d'une combinaison, a beaucoup optimisé mon code dans mes algorithmes de recherche et d'optimisation des combinaisons.
Après avoir trouver le numéro d'une combinaison, quelqu’un aurait-il la formule inverse pour trouver une combinaison à partir de son numéro "d'ordre" de combinaison?
Merci.
Onze ans .... record de déterrage ?
Je m'étais attelé à ce pb en 1976 lors de la sortie du loto en France (tirage de 6 nombres parmi 49). J'étais arrivé à quelque chose comme ça, sous réserve de vérification :
Les nombres tirés, triés par ordre croissant, par ex : 1 12 16 35 41 48 appelés ci après k1 k2 etc.
Ma formule :
N=1 + (k1-1)*(C49 5) + (k2 - 2)*(C(49 4) + (k3-3)*(C(49 3) + (k4 - 4)*(C(49 2) + (k5-5)* (C(49 1) + (k6 -6)*(C49 0)
A vérifier, j'ai la flemme ce soir
On trouve des chercheurs qui cherchent ; on cherche des chercheurs qui trouvent !