probleme de combinaisons non regulieres - VB/VBA/VBS - Programmation
Marsh Posté le 04-02-2009 à 15:12:43
Bonjour
Dans ton exemple tu as 6 nombres et pas 4.
Comment doivent se faire tes combinaisons ? Je ne comprends pas trop l'exemple. Comment sont "tirées" les 4 valeurs ?
Cordialement
Marsh Posté le 04-02-2009 à 15:24:21
je recherche à constituer toutes les possibilites de constituer les groupes possibles ( combinaisons pas arrangement ) de 4 nombres parmi les 20 ou 25 listés dans une table " sites"
dans l'exemple j'ai utilise 6 nombres au lieu des 20 ( classés croissant )
les groupes de 4 vaeurs sont une partie de toutes les combinaisons possibles contituées tout simplement par l'adjonction du nombre suivant trouve dans la table "site" ( n'étant pas de step 1 ,c'est le probleme , il doit choisir le nb suivant )
est ce clair ?
merci de ton aide
Marsh Posté le 04-02-2009 à 20:01:43
Ca fait quand meme pas loin de 300 mille possibilités hein...
Je regarde ca.
Marsh Posté le 05-02-2009 à 10:17:45
oui cela fait pas mal de possibilites ,c'est pour cela qu'il faut que les resultats apparaissent dans une table access " sites" de 4 champs
est il possible de parametrer le nombre de base ( 20 , ou 22 , ou 18 , ou 29 ) ainsi que le nombre dans les groupes ( groupe de 2 ou 3 ou 4 ou 8)
j'avais pensé un formulaire qui me demande :
nombre de valeurs ?
nombre dans les groupes ?
nom de table a creer ?
puis attribuer une variable v01 v02........v20
puis attribuer un nom de champ ( si 3 tec1 tec2 tec3 )
et ensuite composer en incrementant les variables
excuse moi je debute
merci de te penche sur mon cas
Marsh Posté le 05-02-2009 à 11:16:44
Oui c'est possible, pour le moment, je zieute comment faire toutes les possibilités...
Pour le parametrage ca suivra.
Parcontre 8 possibilités, à mon avis sous access c'est impossible. Ca fait 40 milliards de possibilité hein...
Marsh Posté le 05-02-2009 à 12:05:02
tu as raison lorsque je parle de possibilité de groupe de 2 3 4....8 il peut aussi s'appliquer à un groupe de 20 ..25 mais aussi de 15 ..10
bien sur il serait aberrant de penser générer 40 milliards..
merci de ton aide
Marsh Posté le 05-02-2009 à 12:54:59
Re
Suis dsl j'ai pas enormément de temps. On doit pouvoir s'en sortir avec une fonction recursive.
Maintenant, par manque de temps, je pense que tu devrais te faire 8 fonctions, une par nombre de possibilités.
Car ton nombre de possibilité est le nombre de boucles imbriquées.
Pour deux possibilité
For x = 1 to 25
For i = 1 to 25
Pour 4 possibilités tu aurais 4 boucles For etc. D'ou la recursivité qui doit etre envisageable.
Je zieuterais si j'ai 5mn. Au moins pour les 1-2-3-4 possibilités.
Marsh Posté le 05-02-2009 à 14:16:15
super
par contre n'oublies pas que les 20 ou 25 nombres ne sont pas consécutifs ils sont classés par ordre croissant seulement
merci
Marsh Posté le 05-02-2009 à 16:53:45
Bon voila pour deux possibilités et pour trois possibilités, c'est a extrapoler jusqu'a 8 si j'ai bien compris. Pas eu le temps d'approfondir sur la recursivité.
Code :
|
Cordialement
Marsh Posté le 05-02-2009 à 17:12:55
Pour quatre :
Code :
|
Avec 20 nombres ca me sort bien 116280 enregistrements. (20x19x18x17)
Je te laisse faire jusqu'a 8 Attention à la pile quand meme... Car à 5 avec 25 nombres on est a plus de 6 millions d'enregistrements....
Si tu as un souci n'hesite pas.
Marsh Posté le 06-02-2009 à 07:48:50
SuppotDeSaTante a écrit : Bon voila pour deux possibilités et pour trois possibilités, c'est a extrapoler jusqu'a 8 si j'ai bien compris. Pas eu le temps d'approfondir sur la recursivité.
|
merci beaucoup tu es super
as tu pense que ce doit être des combinaisons et pas des permutations c'est pour ca que tu trouves beaucoup de solutions
il faut par ex le groupe 5 12 84 seulement mais pas 12 5 84 ou 84 12 5 ou 84 5 12 les nombres sont classés en croissant dans la table de départ
c'est surement pour ça la quantité de résultat
comment corriger ?
a te lire
Marsh Posté le 07-02-2009 à 14:02:25
bonjour
merci encore car en plus le programme est super rapide ,tu es champion
le seul problème comme je t'ai dit il s'agit de combinaison,on ne va pas sur le site 2 fois identique et les nb sont classes en ordre croissant i l faudrait mettre un test supplémentaire de combiner avec le nb suivant
merci de m'aider
Marsh Posté le 07-02-2009 à 15:41:52
Tkt j'ai pas laissé tomber...
Je regarde juste la meilleure methode. Soit 'filtrer en amont' seulement les groupes qui nous interressent. Soit a posteriori supprimer toutes les combinaisons deja existentes.
Le plus facile est la seconde. Que je suis en train de tester.
Question : Avec 25 nombres, et 4 possibilités, tu as combien de combinaisons possibles ?
Marsh Posté le 07-02-2009 à 17:10:26
avec 25 nb pris par 4 on a la combinaison= (25*24*23*22)/(1*2*3*4) soit 12650 possibilites
le mieux est lorsqu'on va chercher le nombre suivant il doit chercher apres le nombre en cours et ne pas repartir au debut de la liste tant que la liste n'est pas finie
ton programme marche super mais il cree toutes les possibilites avec les doublons
courage et encore merci
Marsh Posté le 19-02-2009 à 11:05:19
bonjour
comment pourrait on lever ces doublons ?
ce qui m'inquiète dans ton calcul , c'est le nombre de solutions gigantesques et la place en mémoire nécessaire !
je suis sur qu'il a un autre moyen plus court .
il est plus facile d'en parler, je sais
merci de toute solution
Marsh Posté le 02-03-2009 à 10:56:10
SuppotDeSaTante a écrit : Tkt j'ai pas laissé tomber... |
bonjour
je me doute que tu es surbooke , j'ai besoin d'un petit conseil sur le test du programme
quand on va chercher V V2 V3 comment l'écrire pour que la variable prise en boucle soit supérieure de 1 ( comme V2=v+1 , v3=v2+1 ....) au lieu de retourner au début de la liste
merci si tu peux me dépanner ....je plante grave
Eglantine
Marsh Posté le 04-02-2009 à 13:06:19
bonjour
je souhaite créer une table access (comprenant 4 champs ) de toutes les combinaisons de 4 valeurs parmi une liste de 20 à 25 nombres situés dans une table indépendante
je bute sur le passage au nombre suivant ( les nb sont classés en croissant ) les nombres n'étant pas forcement consécutifs et j'ai le problème d'incrementation et aussi s'il n'y a que 18 nombres comment le tester et arrêter le processus a 18
au final je dois obtenir une table access contenant :
table "RÉSULTATS"
clé num et 4 champs sol1 sol2 sol3 sol4
1 12 44 51 86
2 12 44 51 90
3 12 44 86 90
4 12 44 90 104
les 20 nombres 12 44 51 86 90 104 ......sont les variables notées dans une table "SITES"
merci du coup de main