Combinsimple

Soyez le premier à donner votre avis sur cette source.

Vue 3 821 fois - Téléchargée 351 fois

Description

Calcul combinatoire n parmi pop(ulation)
Il s'agit de sélectionner l'ensemble à calculer et le programme calcul...calcul etc

On atteint sans problèmes la génération 6 parmi 49
(14 millions de cas à calculer)

Source / Exemple :


CombinLudo

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Bacterius
Messages postés
3869
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
6 -
Passez peut-être à l'assembleur pour l'optimisation de quelques millisecondes puisque vous grattez, ça devrait accélérer un petit peu héhé.

Cordialement, Bacterius !
cs_cantador
Messages postés
4716
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
9 -
Je confirme les 4 secondes.
on s'écarte un peu du sujet et d'ailleurs aujourd'hui ce n'est plus une chance sur 13983816 puisqu'il faut cocher mais 5 numéros + un nombre de 1 à 9 ce qui donne :
1 chance sur 17161956.
Mais cela n'a pas d'importance..car comme je te l'indiquais le Loto.. en ce qui me concerne c'est Bof..
En tout cas bravo, pour ton travail sur cet algorithme qui pourra être ré-utilisé dans d'autres programmes.

cantador
ludodelphi
Messages postés
9
Date d'inscription
lundi 10 juillet 2006
Statut
Membre
Dernière intervention
18 février 2009
-
A quoi sert un générateur de combinaisons ???
Ce générateur de combinaison est utile dans une longue liste d'applications ou il est important de savoir générer l'ensemble des cas possibles :
Simulation numérique, décryptage force brute etc.
Dans tous ces cas, la première étape du besoin est de générer l'ensemble des cas possibles en mémoire, pas de les afficher (lol).

Je te donne un exemple pratique où ce programme peut servir avec le loto, pour que tout le monde comprenne (je sais que tu n'aimes pas le loto, c pour l'exemple) :
Si je veux connaitre mes chances de gagner avec 1 grille, un jeune matheux en herbe me donne rapidement mes chances de gain à 6 nuémros (1 sur 13983816), 5 numéros,.... 3 numéros : Facile

Si on connait la subtile différence qu'il y a entre jouer 10 fois une grille ou jouer 10 grilles différentes,
...tu vas épuiser le plus chevronné des matheux de la planète en lui demandant tes chances exacts d'avoir au moins une grille à 6 numéros, 5 numéros...et 3 num, avec le jeu de grilles suivant (pour l'exemple, 2 , 1 et 0 numéros en commun):
grille n°1 : 1 2 3 4 5 6
grille n°2 : 5 6 7 8 9 10
grille n°3 : 10 11 12 13 14 15
grille n°4 : 20 21 22 23 24 25
(Je ne parle pas des cas avec recoupements plus complexes s'il y a 20 grilles particulières)

La seule façon de répondre rapidement au problème est :
- générer les 6/49 combinaisons possibles; 4 secondes de calcul, qd c'est bien programmé ;-)
- compter le comportement de ton jeu de grille pour tout les tirages (16-20 s de calcul)
- afficher les stats !
On en revient à ce que je disais, un PC ca va vite, sinon c'est à 99% un problème de conception.

C'est ainsi, par énumération, qu'un nombre infinies d'applications informatiques sont traitées, là où la théorie devient trop complexe pour résoudre des cas pratiques aussi nombreux que particuliers ...
En aucun cas tu n'affiches les combinaisons essayées (Toutes !).

Pour rappel, le loto distribue une somme fixe (% des sommes perçues) que se partagent les gagnants :
Si tu joues 10 fois la même grille, tu gagnes 10 fois 1/10 eme de la somme, soit autant que si tu avais joué 1 seule grille ! Il est donc 10 fois plus intéressant de jouer 10 grilles différentes, mais cela, tout le monde le sait déjà.
Ce qu'il est plus difficile d'appréhender, c'est ce qu'il se passe pour les combinaisons à 5 num, 4 num etc,
ce que tu vas pouvoir analyser maintenant que tu as un bel algo.

LudoDelphi
cs_cantador
Messages postés
4716
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
9 -
et pour l'affichage, dans une listbox, c'est 3fois plus rapide :

procedure TForm1.Button2Click(Sender: TObject);
var
a, b, c, d, e, f, nob: integer;
TempsCombi: longWord;
begin
TempsCombi := GetTickCount;
nob := 19;
for a := 1 to (nob - 5) do
for b := a + 1 to (nob - 4) do
for c := b + 1 to (nob - 3) do
for d := c + 1 to (nob - 2) do
for e := d + 1 to (nob - 1) do
for f := e + 1 to nob do
ListBox1.Items.Add(IntToStr(a) + ';' + IntToStr(b) + ';'
+ IntToStr(c) + ';' + IntToStr(d) + ';' + IntToStr(e) + ';'
+ IntToStr(f));
ShowMessage(IntToStr(GetTickCount - TempsCombi));
end;
cs_cantador
Messages postés
4716
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
9 -
Quant à l'affichage, c'est lui le plus gourmand mais
si tu veux faire des grilles tu es bien obligé d'afficher quelque chose ne serait ce que pour les reproduire..
De toutes façons, le Loto ne m'a jamais beaucoup intéressé et encore moins aujourd'hui avec la nouvelle mouture..

J'ai trouvé nettement mieux depuis longtemps..

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.