Auteur : TerminAdminAtor
Date : 28/02/2007
Citation :
Salut à tous,
je vous présente un petit script de simulation de courses PMU que j'ai uniquement fait en tant qu'amateur de courses de chevaux pour voir des statistiques.
Je ne pense pas que ce script devrait être utile à quelqu'un,je le poste juste pour son contenu. Que ça soit claire:il ne vous permettra pas de gagner aux courses

Je vous explique comment le programme fonctionne,il faut attribuer plusieurs valeurs à différentes variables: vous choisissez plusieurs courses,le nombre de course sera attribué à cette variable:
Code : Tout sélectionner
$courses = 8
ex.:
ici je joue pour 8 courses,pour la première course j'ai misé sur un cheval qui a un rapport théorique de 1.8€ pour 1€ de misé,etc...$rapports[0]=0 ne nous sert pas,je n'aime juste pas utiliser des 0 dans mes boucles...Global $rapports[9]
$rapports[0] = 0
$rapports[1] = 1.8
$rapports[2] = 2.5
$rapports[3] = 2.1
$rapports[4] = 2.4
$rapports[5] = 1.6
$rapports[6] = 1.9
$rapports[7] = 2.6
$rapports[8] = 2.1
Ensuite il y a des calculs,de belles boucles,des compteurs ( des variables qui content les courses gagnées,celles perdues,l'argent gagné,perdue etc...),un fichier sera généré et puis le tout sera affiché à l'écran.
Pour faire toutes les possibilités,pour un nombre de courses donnée,j'utilise des "motifs".Ce sont de simples fichiers textes,avec à chaque ligne un motif (composé de 0 et 1,0 pour le cheval perds,1 le cheval gagne).
Ainsi le fichier motifs8.txt,contient toutes les possibilités pour 8 courses.
J'ai pas le temps d'intégrer le générateur de motifs dans le script central,mais c'est simple je pourrai le faire... je le poste avec.
Pour l'utiliser il faut changer la variavle $times,si je fais $times =10,ça me générera un fichier txt pour 10courses..vlà ^^j'espère que vous avez suivi 37% de ce que j'ai dit...(tu te demande pourquoi 37...héhé comme ça

-générateur de motif intégré,libraire de sauvegarde des motifs déjà générés en .../motifs/
Code : Tout sélectionner
#cs ----------------------------------------------------------------------------
PMU SIMULATOR
#ce ----------------------------------------------------------------------------
#include <Array.au3>
#include <File.au3>
#include <GUIConstants.au3>
Global $total, $times = 100, $somme = 0, $chevo = 0, $benefMAX = 0, $benefMINI = 0, $compte, $totalG = 0, $courses = 10, $rand
$courses = InputBox("PMU-sim-config", "Combien de courses souhaitez vous simuler?")
If $courses < 1 Then Exit MsgBox(0, "erreurrrr", "Vous avez rentré un nombre nul ou négatif")
$zYiYu = $courses * 30
$_guiPREMIER = GUICreate("Configuration...", 200, $zYiYu)
GUICtrlCreateLabel("Entrez le rapport pour chaque cheval:", 10, 5)
Dim $IOJuhu[$courses]
For $i = 0 To $courses - 1
$IOJuhu[$i] = GUICtrlCreateInput("", 20, 5 * $i + 20 + $i * (20), 60)
Next
$IJHuiefbh = GUICtrlCreateButton("OK", 91, 22, 100, 100)
GUISetState()
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then Exit
If $msg = $IJHuiefbh Then ExitLoop
WEnd
Global $rapports[$courses + 1]
$rapports[0] = 0
For $i = 1 To $courses
$rapports[$i] = GUICtrlRead($IOJuhu[$i - 1])
If $rapports[$i] < 1.1 Then Exit MsgBox(64, "erreurrrr", "Le rapport ne peut pas être plus petit que 1.1!")
Next
$file = @WorkingDir & '\PMU-sim.txt'
If FileExists($file) Then FileDelete($file)
#include <GUIConstants.au3>
$title = "Simulateur de courses PMU"
$title2 = "Progression des simulations"
$_guibarre = GUICreate($title2, 320, 50, -1, -1, -1, $WS_EX_TOPMOST)
$progress = GUICtrlCreateProgress(10, 10, 300, 30)
GUISetState()
$file2 = @WorkingDir & '\motifs\motifs' & $courses & '.txt'
While 1
If Not FileExists($file2) Then CreaMotif($file2, $courses)
If FileExists($file2) Then;vérification du fichier motif
If _FileCountLines($file2) = 2 ^ $courses Then
ExitLoop
Else
CreaMotif($file2, $courses)
EndIf
EndIf
WEnd
Global $perteTOTAL, $mise = $courses * 1.5
Dim $stats_neg[$courses + 1], $stats_pos[$courses + 1], $eachTIME_neg[$courses + 1], $eachTIME_pos[$courses + 1]
For $i = 1 To $stats_neg[0]
$stats_neg[$i] = 'non simulé'
$stats_pos[$i] = 'non simulé'
Next
$motif_brut = StringSplit(FileRead($file2), Chr(13))
If $motif_brut[0] = 1 Then MsgBox(0, 'pmu', $file2 & " n'existe pas !")
$times = $motif_brut[0]
For $i = 2 To $times Step 1
$motif_brut[$i] = StringTrimLeft($motif_brut[$i], 1)
Next
Dim $_motif
For $i = 1 To $times Step 1
$_motif = StringSplit($motif_brut[$i], '')
$gagne = 0
$perdu = 0
$rGlob = 0
$gains = 0
For $abc = 1 To $courses Step 1
$gains += $_motif[$abc] * 1.5 * $rapports[$abc]
ranD($_motif[$abc])
Next
$benef = $gains - $mise
If $gains > $mise Then;Bénéfice!
$total += 1
$somme += $benef
If $benef > $benefMAX Then $benefMAX = $benef
If $benefMINI > $benef Then $benefMINI = $benef
$stats_pos[$gagne] += $benef
$eachTIME_pos[$gagne] += 1
Else;Perte :(
$stats_neg[$gagne] += $benef
$eachTIME_neg[$gagne] += 1
$perteTOTAL += 1
EndIf
$compte += $gains
FileWrite($file, '*****n°' & $i & '******' & @CRLF & 'Rapport courses gagnées/perdues: ' & $gagne & '/' & $courses & @CRLF & 'Mise : ' & $mise & '€' & @CRLF & 'Reçu : ' & $gains & '€' & @CRLF & 'Bénéfice : ' & $benef & '€' & @CRLF & @CRLF)
If Random(0, 1, 1) Then GUICtrlSetData($progress, Round($i / $times * 100))
Next
$data = FileRead($file)
FileDelete($file)
FileWrite($file, @CRLF & "SIMULATEUR DE COURSES PMU" & @CRLF & @CRLF & "by TerminAdminAtor ~ http://autoit-fr.realbb.net/index.forum" & @CRLF & @CRLF & 'Nbre de simulations : ' & $times & @CRLF & @CRLF & _
'Bénéfices/pertes total : ' & $total & '/' & $perteTOTAL & ' ' & @CRLF & 'Moyenne des bénéfices : ' & Round($somme / $times, 2) & '€' & ' ' & @CRLF & 'Moyenne de courses gagnantes par simulation : ' & $chevo / $times & @CRLF & "bénéfices max/min : " & $benefMAX & '€ /' & $benefMINI & '€' & @CRLF & _
'Gains/mises total: ' & $compte & '€ /' & $times * $mise & '€' & @CRLF & 'Courses gagnantes/perdantes: ' & $totalG & '/' & $times * 16 & @CRLF)
FileWrite($file, @CRLF & @CRLF & 'Moyennes des simulations en fonction des courses gagnées' & @CRLF & @CRLF)
For $i = 1 To $courses Step 1
If $stats_neg[$i] = '' Or $stats_pos[$i] = '' Then
If $stats_neg[$i] = '' And Not $stats_pos[$i] = '' Then
FileWrite($file, $i & ' / ' & $courses & ' =:= moy.benef. ' & Round($stats_pos[$i] / $eachTIME_pos[$i], 2) & ' € , ' & $eachTIME_pos[$i] & 'x / - ' & @CRLF)
EndIf
If $stats_pos[$i] = '' And Not $stats_neg[$i] = '' Then
FileWrite($file, $i & ' / ' & $courses & ' =:= ' & '- / ' & Round($stats_neg[$i] / $eachTIME_neg[$i], 2) & '€ , ' & $eachTIME_neg[$i] & ' x ' & @CRLF)
EndIf
If $stats_neg[$i] = '' And $stats_pos[$i] = '' Then
FileWrite($file, $i & ' / ' & $courses & ' =:= ' & '0€ / 0€ ' & @CRLF)
EndIf
Else
FileWrite($file, $i & ' / ' & $courses & ' =:= moy.bénéf. ' & Round($stats_pos[$i] / $eachTIME_pos[$i], 2) & '€ , ' & $eachTIME_pos[$i] & 'x / moy.perte ' & Round($stats_neg[$i] / $eachTIME_neg[$i], 2) & '€ , ' & $eachTIME_neg[$i] & 'x ' & @CRLF)
EndIf
Next
FileWrite($file, @CRLF & @CRLF & @CRLF & $data)
$_gui = GUICreate($title, 700, 500, -1, -1, $WS_SIZEBOX + $WS_MINIMIZEBOX + $WS_CAPTION + $WS_POPUP + $WS_SYSMENU + $WS_MAXIMIZEBOX)
GUISwitch($_gui)
$_IN = GUICtrlCreateEdit(@CRLF & @CRLF & "by TerminAdminAtor ~ http://autoit-fr.realbb.net/index.forum" & @CRLF & @CRLF, -1, -1, 700, 500, $ES_CENTER + $ES_WANTRETURN + $WS_VSCROLL)
WinSetTrans($title, "", 0)
GUISetState()
$data = FileRead($file)
$font = "Comic Sans MS"
GUICtrlSetFont(-1, 10, 400, -1, $font)
GUICtrlSetData($_IN, $data)
For $i = 0 To 255 Step 3
WinSetTrans($title, "", $i)
GUISwitch($_guibarre)
WinSetTrans($title2, "", 255 - $i)
GUISwitch($_gui)
Next
GUISwitch($_guibarre)
GUIDelete($_guibarre)
GUISwitch($_gui)
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then
For $i = 0 To 255 Step 3
WinSetTrans($title, "", 255 - $i)
Next
ExitLoop
EndIf
WEnd
Exit
Func ranD($r)
If $r = 0 Then $perdu += 1
If $r = 1 Then
$gagne += 1
$chevo += 1
$totalG += 1
EndIf
Return $r
EndFunc ;==>ranD
Func CreaMotif($ecx, $oyu)
WinSetTitle($title2, "", "Création des motifs")
If FileExists($ecx) Then FileDelete($ecx)
DirCreate(@WorkingDir & '\motifs')
Local $r, $data, $exit = 0
For $i = 1 To 2 ^ $oyu
For $o = 1 To 1
Do
For $io = 1 To $oyu
$r &= Random(0, 1, 1)
Next
If StringLen($r) > $oyu Then $r = ''
Until Not StringInStr($data, $r) And Not $r = ''
FileWrite($ecx, $r & @CRLF)
$r = ''
$data = FileRead($ecx)
Next
GUICtrlSetData($progress, Round($i / (2 ^ $oyu) * 100))
If $exit = 1 Then ExitLoop
Next
$data = FileRead($ecx)
$data = StringTrimRight($data, 2)
FileDelete($ecx)
FileWrite($ecx, $data)
WinSetTitle("Création des motifs", "", $title2)
GUICtrlSetData($progress, 0)
EndFunc ;==>CreaMotif