Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
| teaching:exos:poker_menteur [2013/10/31 11:41] – villersd | teaching:exos:poker_menteur [2013/11/12 13:38] (Version actuelle) – [Poker menteur] villersd | ||
|---|---|---|---|
| Ligne 12: | Ligne 12: | ||
| - un carré | - un carré | ||
| - une quinte ou poker | - une quinte ou poker | ||
| - | * Ces combinaisons | + | * L' |
| + | * Examiner en fonction du nombre de lancers simulés la convergence des statistiques vers les probabilités en fonction du type de main. | ||
| + | |||
| + | ===== Solution ===== | ||
| + | |||
| + | Voici un programme permettant de simuler et traiter des lancers | ||
| + | |||
| + | <sxh python; title : Poker_des_01.py> | ||
| + | # | ||
| + | # -*- coding: utf-8 -*- | ||
| + | |||
| + | # Poker menteur : lancers et mains possibles | ||
| + | # 5 dés numérotés [1, 2, 3, 4, 5, 6] | ||
| + | # | ||
| + | |||
| + | import random | ||
| + | |||
| + | def lancer_de(nfaces = 6): | ||
| + | # résultat lancer d'un seul dé | ||
| + | try: return random.randint(1, | ||
| + | except: return 0 | ||
| + | |||
| + | def lancer_des(ndes = 1, nfaces = 6): | ||
| + | # résultat lancer de plusieurs dés. Sortie en liste triée. | ||
| + | #try: return tuple(sorted([random.randint(1, | ||
| + | try: return sorted([random.randint(1, | ||
| + | except: return () | ||
| + | |||
| + | def main(lancer): | ||
| + | # construit une liste triée par nombre d' | ||
| + | # de 2 nombres : nombre d' | ||
| + | comptage = sorted([[lancer.count(valeur), | ||
| + | #print comptage, | ||
| + | # | ||
| + | # construit un tuple des nombres d' | ||
| + | signature = tuple([nombre for nombre, valeur in comptage if nombre != 0]) | ||
| + | #print signature, | ||
| + | main = mains[signature] # qualification correspondante de la main | ||
| + | if main == "rien, petite ou grande suite": | ||
| + | # l' | ||
| + | if lancer[0]==2: | ||
| + | main = " | ||
| + | elif lancer[4]==5: | ||
| + | main = " | ||
| + | else: | ||
| + | main = " | ||
| + | return main | ||
| + | |||
| + | # dictionnaire de correspondance pour les tuples des occurrences triées | ||
| + | t5=tuple([5]) | ||
| + | mains = { | ||
| + | (1, | ||
| + | (1,1,1,2): "une paire", | ||
| + | (1,2,2): "deux paires", | ||
| + | (1,1,3): " | ||
| + | (2,3): " | ||
| + | (1,4): " | ||
| + | t5: " | ||
| + | } | ||
| + | |||
| + | n_essais=100 | ||
| + | for i in range(n_essais): | ||
| + | lancer= lancer_des(5, | ||
| + | print lancer, main(lancer) | ||
| + | </ | ||
| + | |||
| + | Et voici un autre programme permettant d' | ||
| + | |||
| + | <sxh python; title : Poker_des_03.py> | ||
| + | # | ||
| + | # -*- coding: utf-8 -*- | ||
| + | |||
| + | # ... | ||
| + | |||
| + | lancers_possibles={} | ||
| + | histo_mains={} | ||
| + | for f1 in range(1,7): # pour toutes les faces possibles du dé 1 | ||
| + | for f2 in range(1,7): # pour toutes les faces possibles du dé 2 | ||
| + | for f3 in range(1,7): # pour toutes les faces possibles du dé 3 | ||
| + | for f4 in range(1,7): # pour toutes les faces possibles du dé 4 | ||
| + | for f5 in range(1,7): # pour toutes les faces possibles du dé 5 | ||
| + | lancer= tuple(sorted([f1, | ||
| + | #print lancer, main(lancer) | ||
| + | if lancers_possibles.has_key(lancer): | ||
| + | lancers_possibles[lancer][1]+=1 | ||
| + | histo_mains[lancers_possibles[lancer][0]]+=1 | ||
| + | else: | ||
| + | main2=main(lancer) | ||
| + | lancers_possibles[lancer]=[main2, | ||
| + | if histo_mains.has_key(main2): | ||
| + | histo_mains[main2]+=1 | ||
| + | else: | ||
| + | histo_mains[main2]=1 | ||
| + | |||
| + | for c,v in lancers_possibles.iteritems(): | ||
| + | print c,v | ||
| + | |||
| + | for c,v in histo_mains.iteritems(): | ||
| + | print c,v | ||
| + | print 'somme = ', | ||
| + | print '6**5 = ', | ||
| + | </ | ||
| + | |||
| + | <note tip>Pour la comparaison entre les probabilités issues de l' | ||
| + | |||
| + | Pour 7776 lancers, on obtient par exemple ceci pour la comparaison de l' | ||
| + | quinte (poker) [6, 3] | ||
| + | rien [480, 466] | ||
| + | full [300, 299] | ||
| + | carre [150, 175] | ||
| + | deux paires [1800, 1855] | ||
| + | grande suite [120, 142] | ||
| + | brelan [1200, 1192] | ||
| + | une paire [3600, 3518] | ||
| + | petite suite [120, 126] | ||
| + | |||
| + | Pour 7 776 000 lancers, on a par exemple : | ||
| + | quinte (poker) [6, 5929] | ||
| + | rien [480, 480707] | ||
| + | full [300, 300304] | ||
| + | carre [150, 149591] | ||
| + | deux paires [1800, 1800461] | ||
| + | grande suite [120, 120194] | ||
| + | brelan [1200, 1200807] | ||
| + | une paire [3600, 3597522] | ||
| + | petite suite [120, 120485] | ||
| + | |||