Accueil > Forum > > > > Les systèmes réducteurs
Les systèmes réducteurs
vendredi 27 octobre 2006 à 23:52:04 |
Re : Les systèmes réducteurs

despeludo
|
Tiens en zyeutant à droite à gauche sur le net, je crois que j'ai trouvé peut être une piste d'amélioration du système de calcul. En fait on doit pouvoir faire beaucoup plus rapide en prenant le problème à l'envers : plutôt que de rechercher les combinaisons qui permettent de résoudre le problème comme ça brutalement ne serait-il pas mieux de chercher parmis les n combinaisons possibles celles qui ont moins de 3 numéros en commun ; du coup on fait un seul passage sur l'ensemble des combinaisons et on vérifie à la fin que l'on a ce que l'on a bien ce que l'on voulait. Euh tu m'as suivi ?    Bon je vais essayer de recoder ça et je te transmet le bout de code. A+ Despeludo
|
|
samedi 28 octobre 2006 à 00:41:33 |
Re : Les systèmes réducteurs

despeludo
|
Ok effectivement c'est beaucoup plus rapide. J'ai obtenu un système réduit pour un sélection de 6 à 49 numéros en moins de dix minutes. Par contre je n'ai mis la vérification pour gagner du temps. Libre à toi de le faire. Alors comme promis je remets le code ici. Bon courage pour les prochains tirages.
===========================================================
program Reducteur;
{$APPTYPE CONSOLE}
uses SysUtils;
{ Objectif : programme de calcul de systèmes réducteurs Le programme calcule le nombre de combinaisons nécessaires pour être sûr d'obtenir n numéros parmis m tirés sur une sélection de p numéros }
type TCombinaison = record Necessaire : Boolean; Tirage : array[0..5] of byte; end;
function Combinaison(AValeurMax : Integer; ASelection : Integer) : Integer; var i : Integer; p : Integer; r : Int64; begin r := 1; p := AValeurMax; for i := 0 to Pred(ASelection) do begin r := p * r; Dec(p); end; p := ASelection; for i := 0 to Pred(ASelection) do begin r := r div p; Dec(p); end; Result := r; end;
var i : integer; j,k,l : Integer; nb_numeros_tires : Integer; nb_numeros_selectionnes : Integer; nb_numeros_objectif : Integer; nb_numeros_max : Integer; combinaisons : array of TCombinaison; nb_combinaisons : Integer; nb_numero_communs : Integer; nb_combinaisons_selectionnee : Integer; begin nb_numeros_tires := 6; // on part de cette base pour le loto nb_numeros_max := 49; nb_numeros_objectif := 3; for nb_numeros_selectionnes := nb_numeros_tires to nb_numeros_max do begin // calcul du nombre de combinaisons possibles nb_combinaisons := Combinaison(nb_numeros_selectionnes, nb_numeros_tires); SetLength(combinaisons, nb_combinaisons); System.Writeln(Format('Selection : %d '#7' Combinaisons : %d', [nb_numeros_selectionnes, nb_combinaisons]));
// remplissage du tableau combinaisons[0].Tirage[0] := 1; combinaisons[0].Tirage[1] := 2; combinaisons[0].Tirage[2] := 3; combinaisons[0].Tirage[3] := 4; combinaisons[0].Tirage[4] := 5; combinaisons[0].Tirage[5] := 6; Combinaisons[0].Necessaire := True; // Par défaut on garde tout if High(Combinaisons) > 0 then begin for i := 1 to High(Combinaisons) do begin for j := 0 to High(Combinaisons[i].Tirage) do begin Combinaisons[i].Tirage[j] := Combinaisons[i-1].Tirage[j]; end; j := High(Combinaisons[i].Tirage); Inc(Combinaisons[i].Tirage[j]); while Combinaisons[i].Tirage[j] > (nb_numeros_selectionnes + j - High(Combinaisons[i].Tirage)) do begin Inc(Combinaisons[i].Tirage[j-1]); Dec(j); end; for j := 1 to High(Combinaisons[i].Tirage) do begin if Combinaisons[i].Tirage[j] > (nb_numeros_selectionnes + j - High(Combinaisons[i].Tirage)) then begin Combinaisons[i].Tirage[j] := Combinaisons[i].Tirage[j-1] + 1; end; end; Combinaisons[i].Necessaire := True; end; end;
// Recherche des combinaisons nécessaires nb_combinaisons_selectionnee := 0; for i := 0 to Pred(nb_combinaisons) do begin if Combinaisons[i].Necessaire then begin Inc(nb_combinaisons_selectionnee); for j := i + 1 to Pred(nb_combinaisons) do begin nb_numero_communs := 0; for k := 0 to High(Combinaisons[i].Tirage) do begin for l := 0 to High(Combinaisons[j].Tirage) do begin if Combinaisons[i].Tirage[k] = Combinaisons[j].Tirage[l] then begin Inc(nb_numero_communs); if nb_numero_communs = nb_numeros_objectif then break; end; end; if nb_numero_communs = nb_numeros_objectif then break; end; if nb_numero_communs = nb_numeros_objectif then begin Combinaisons[j].Necessaire := False; end; end; end; end;
// Affichage Writeln(Format('%d combinaisons necessaires', [nb_combinaisons_selectionnee])); for i := 0 to Pred(nb_combinaisons) do begin if Combinaisons[i].Necessaire then begin for j := 0 to High(Combinaisons[i].Tirage) do begin write(Format('%.2d ', [Combinaisons[i].Tirage[j]])); end; writeln(''); end; end;
end; system.Readln;
end.
|
|
samedi 28 octobre 2006 à 17:55:43 |
Re : Les systèmes réducteurs

cantador
|
Je ne pense qu'il soit utile de tester toutes les sélections car qd on joue on sélectionne une série de numéros et ensuite on choisit un type de grille. Par ailleurs, on doit pouvoir choisir son jeu..(loto, keno, pmu + ceux à l"étranger et il y en a bcp..) ce qui revient à dire que la poblématique est la suivante :
Combien (et comment) faut-il prendre au minimum de p-parties (les grilles) de {1,...,m} (la sélection) pour que toute t-partie de {1,...,m} (trace du tirage dans la sélection) ait au moins r éléments communs (combinaison gagnante) avec au moins l'une d'entre elles?
Car en fait, ce qui compte c'est de jouer le minimum de combinaisons permettant d'assurer à X % (pour l'instant à 100 %, mais après c'est à étudier) c'est-à-dire être certain d'avoir la condition de garantie que l'on a choisit au départ et au moins UNE FOIS. Ex : tu prend 15 numéros, jouer des grilles de 6 et tu veux une garantie de 5/7 et c'est-à-dire avoir au moins une grille de 5 bons numéros sur 6 si 7 bons numéros sortent dans les 15. Quelles sont les combinaisons minimum à jouer(bien sûr afin de dépenser le moins possible) afin d'assurer le résultat escompté ?
et c'est pas sûr qu'il n'y ait qu'une solution..
Enfin, ça commence à chauffer et çà devient très intéressant..
Evidemment, reste le problème du choix de la sélection, mais ça c'est un autre débat...
Je propose que tu déposes ton programme sur le forum en créant une interface + une ListBox1 + Tbutton1 + placer 3 edits et remplacer les writeln par ListBox1.items.add(Format(....)); pour le 2e writeln, il suffit de faire une concaténation..
Ce qui permettra d'avoir un ensemble plus convivial et d'élargir le débat à tout le forum.
@+ cantador
|
|
mercredi 1 octobre 2008 à 15:38:44 |
Re : Les systèmes réducteurs

Hallyd
|
Bonjour à tous ! Voilà, je suis tout nouveau et je n'y connais rien de rien en math. Mais, je suis amateur de Kéno. Je viens de m'inscrire sur le site car j'ai remarqué que vous en parliez (mais vous êtes tous de gros connaisseurs). Quant à moi, je suis le joueur lambda de tous les jours. J'ai une question, en espérant que l'on puisse m'apporter une aide. Voilà, j'ai 19 n° fétiches. Je désire jouer des grilles de 6 n° (potentiel de gains pour 6 bons n° 1000¤, pour 5n° 30¤ et 4n° 2¤....mais je ne vous apprends rien). J'aimerais savoir si un système réducteur existe pour jouer 19n° et être certain d'obtenir les 6 bons numéros, si 6/7/8 ou 9n° ... sortent dans ma selection de 19n°. J'espère que mes explications sont assez claires pour avoir une réponse de votre part. (Moi, je me comprends, mais je ne suis pas sûr d'être bien clair, veuillez m'en excuser SVP, merci). J'attends avec impatience vos réponses. Cordialement à tous ! et encore merci d'avance ! Hallyd
|
|
jeudi 2 octobre 2008 à 03:21:36 |
Re : Les systèmes réducteurs

Hallyd
|
Pardon, je pense que 6 bons n° sur 19, c'est beaucoup trop (après réflexion). Par contre est-ce que vous pouvez me dire si cela est possible avec 9 numéros. Donc un système efficace de 6/6 bon numéros sur 9 joués. Bien sûr, si 6n° sont corrects dans ma sélection. Merci et à bientôt. Hallyd
|
|
jeudi 2 octobre 2008 à 19:41:55 |
Re : Les systèmes réducteurs

cantador
|
bonsoir, Si ta sélection est de 19 numéros, il est inutile de tenter de gagner une grille de 6/6, le nombre de combinaisons a joué étant trop important. en revanche tu peux jouer des grilles de 10 avec une petite chance de gagner (si tu as 9 bons numéros/19) une grille de 6/10 ou 7/10. les autres gains sont hors de portée.. je sais c'est dur, mais c'est la dure réalité. cantador 
|
|
jeudi 2 octobre 2008 à 20:44:39 |
Re : Les systèmes réducteurs

Hallyd
|
Bonsoir, Merci mille fois Cantador, et dis moi. 6/9 d'après toi c'est faisable ? merci
|
|
jeudi 2 octobre 2008 à 22:04:40 |
Re : Les systèmes réducteurs
|
jeudi 2 octobre 2008 à 22:24:03 |
Re : Les systèmes réducteurs

Hallyd
|
Superbe Cantador, merci ! Mais maintenant, comment je fais. Est-ce que tu peux me mettre la solution.......mais pas comme vous faites avec tel ou tel formule, car je n'y comprends absolument rien, vous êtes tous trop 'balaises'. Est-ce que tu m'alligner les nombres, que j'y comprenne quelque chose. Peux-tu me faire ca ? ou est-ce trop demandé, car trop long ! Merci, j'attends ta réponse. Cordialement
|
|
jeudi 2 octobre 2008 à 22:59:10 |
Re : Les systèmes réducteurs
|
Cette discussion est classée dans : système, systèmes, combinaisons, numéros, réducteurs
Répondre à ce message
Sujets en rapport avec ce message
Pb Ressources système [ par ogizmo ]
Bonjour à tous,Je suis en cours de création d'une appli, mais depuis peu, après avoir fermé mon appli, les ressources systèmes de mon PC s'écroule pet
Message du système [ par Bruto ]
J'ai consulté le tutoriel sur le message dans la rubrique Tutoriaux mais il ne me montre pas comment capter un message du système.Avec la façon citée,
Résolution d'un Système à plusieurs équetions et plusieurs inconnus [ par ryadus ]
Salut;est ce que quelqu'un aurait-it un moyen de pour résoudre un systéme comportant plusieurs équetions et plusieurs inconnus;merci,
Variable d'environnement [ par jep93 ]
Mon problème est de modifier par programme une variable d'environnement définie au niveau système. Ce que je sais :Lors de l'activation d'un program
Le bureau de windows [ par norton ]
Bonsoir a tous ...J'avais vu dans labo(projets communs) que des presonnes avait essayer de faire un système d'exploitation.Moi j'aimerais savoir comme
Différence d'affichage entre systèmes Windows [ par gimbflo2002 ]
Bonjour,j'ai un problème d'affichage et j'espère qu'un spécialiste pourra me dépanner !Voilà, j'ai développé une appli sous delphi sur un système Wind
Interface utilisateur [ par racing66 ]
Bonjour.voilà je cherche un moyen de créer un système de navigation pour l'utilisateur qui ressemble au système d'emule.Je m'explique, j'aimerais que
Système de fichier Win32 [ par SouthGuy ]
BonjourJe voudrais savoir si sous Windows XP il existe une API permettant d'être prévenu (callback ?) an cas de création/modification/suppression d'un
répertoire système [ par Awaking ]
Certains diront que j'ai mal cherché mais je n'ai pas trouvé de source permertant de connaître le répertoire système de window comme C:\window\system3
Comment récupérer le numéros de séries de la carte mère ? [ par BenXbox ]
Salut à tous, Comment récupérer le numéros de séries de la carte mère ? Merci d'avance. Mon Site Web : http://W
Livres en rapport
|
Derniers Blogs
VMMAP EN MODE INSTRUMENTATION SUR SYSTèME 64BIT : ATTENTION à LA PLATEFORME CIBLE DU BUILD .NETVMMAP EN MODE INSTRUMENTATION SUR SYSTèME 64BIT : ATTENTION à LA PLATEFORME CIBLE DU BUILD .NET par coq
Si vous tentez d'utiliser VMMap en mode instrumentation* vous avez peut-être rencontré une erreur relativement peu explicite au lancement du profiling : Unable to launch application: "E:\Temp\ApplicationToProfile\ApplicationToProfile\bi...
Cliquez pour lire la suite de l'article par coq ETENDRE LE TEAM WEB ACCESS DE TFS 2012 - STEP 0ETENDRE LE TEAM WEB ACCESS DE TFS 2012 - STEP 0 par Philess
L'extensibilité du Team Web Access
Le Web Access (site d'équipe) de Team Foundation Server a été complètement réécrit dans la version 2012 avec pas moins de 400.000 lignes de JavaScript. Ce nouveau modèle a été pensé pour offrir de grandes...
Cliquez pour lire la suite de l'article par Philess SIMULER FACILEMENT L'ENVOI DE MAILSIMULER FACILEMENT L'ENVOI DE MAIL par JeremyJeanson
il m'a été demandé, à plusieurs reprises, comment je faisais pour simuler l'envoi de mail lors de mes démos de Workflow Foundation. Ma solution est plutôt simple : j'utilise la configuration par défaut du SmtpClient et j'oriente les mails vers un dossier ...
Cliquez pour lire la suite de l'article par JeremyJeanson VOTEZ POUR LE TOP 10 DES INFLUENCEURS SHAREPOINT FRANCOPHONES !VOTEZ POUR LE TOP 10 DES INFLUENCEURS SHAREPOINT FRANCOPHONES ! par Patrick Guimonet
Si ce n'est déjà fait (comme plus de 600 personnes déjà), il est encore temps de voter pour le concours TOP 10 des influenceurs SharePoint francophones ! Il est organisé par harmon.ie et accessible ici : http://harmon.ie/top-...
Cliquez pour lire la suite de l'article par Patrick Guimonet
Logiciels
Easy-Planning (4.5.0.11)EASY-PLANNING (4.5.0.11)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté a... Cliquez pour télécharger Easy-Planning CVEasy (3.1.0.51)CVEASY (3.1.0.51)PHMSD-CVEasy est un logiciel d'aide à la rédaction de CV d'une simplicité déconcertante.
PHMSD-C... Cliquez pour télécharger CVEasy LettresFaciles 2011 (8.6.0.31)LETTRESFACILES 2011 (8.6.0.31)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011 sDEVIS-FACTURES vlPRO (8.4.2.62)SDEVIS-FACTURES VLPRO (8.4.2.62)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO Devis-Factures PHMSD (2.1.0.11)DEVIS-FACTURES PHMSD (2.1.0.11)Configuration minimale
Nécessite Windows™ 2000, XP, Windows 7, 8, Vista (Service Pack à... Cliquez pour télécharger Devis-Factures PHMSD
|