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édenteDernière révisionLes deux révisions suivantes | ||
teaching:exos:poker_menteur [2013/10/31 11:41] – villersd | teaching:exos:poker_menteur [2013/11/03 10:22] – villersd | ||
---|---|---|---|
Ligne 13: | Ligne 13: | ||
- une quinte ou poker | - une quinte ou poker | ||
* Ces combinaisons sont-elles justifiables sur base de l' | * Ces combinaisons sont-elles justifiables sur base de 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 = ',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] | ||
+ | |||
+ |