(Python) Ich habe 1 Million Hände analysiert ~ Wie oft wird AA verteilt? ?? ~

Vielen Dank für das Surfen. Es ist pbird gelb.

Dieses Mal habe ich gezählt, wie oft "AA" an "alle 10.000 Hände" verteilt wurde. Es gibt Tage, an denen AA extrem wird und Tage, an denen es überhaupt nicht kommt, aber was ist mit der Realität ...

↓ Analyseergebnis スクリーンショット 2020-08-15 19.17.33.png

Wie man diese Tabelle liest ・ Die x-Achse ist alle 10.000 Hände (~ 10000, ~ 20000, ~ 30000, ...) ・ Die y-Achse gibt an, wie oft AA verteilt wurde ist.

Das Maximum ist 67 Mal und das Minimum ist 31 Mal, was ziemlich verteilt ist. .. ..

Ich habe auch KK überprüft. ↓ Analyseergebnis スクリーンショット 2020-08-15 19.36.38.png

Unten ist der Quellcode. Das Programm ist ein absoluter Anfänger. Wenn Sie also Ideen haben, wie Sie besseren Code schreiben können, lassen Sie es uns bitte wissen! !!

pokermain.py


from holdcards import Holdcards 
from plotgraph import Plotgraph
import os
import glob
import re

path='Schreiben Sie den Pfad hier'
hand = "AA" #Hand, die Sie überprüfen möchten: Kann frei geändert werden
count = 10000 #Für jede Hand, die Sie überprüfen möchten: Kann frei geändert werden


num = lambda val : int(re.sub("\\D", "", val))
filelist = sorted(glob.glob(os.path.join(path,"*.txt"),recursive=True),key = num)
totcards = []
graphdata = []
countdata = []
counthands = []
for item in filelist:
    print(item)
    with open(item) as f:
        data = f.readlines()
        card = Holdcards()
        h_cards = card.find_holdcards(data)
        totcards += h_cards


i = 0
while len(totcards[count*i:count*(i+1)]) == count:
    graphdata.append(totcards[count*i:count*(i+1)])
    #counthands.append(str(count*i+1)+"~"+str(count*i+len(totcards[count*i:count*(i+1)])))
    i += 1

for item in graphdata:
    countdata.append(item.count(hand))

print(len(graphdata))
print(countdata)

graph= Plotgraph()
graph.writegraph(countdata,hand,count,len(graphdata)*count)



python:holdcards.py



class Holdcards:
       def __init__(self):
              self.trump={"A":"14","K":"13","Q":"12","J":"11","T":"10","9":"9","8":"8","7":"7","6":"6","5":"5","4":"4","3":"3","2":"2"}
              self.r_trump={"14":"A","13":"K","12":"Q","11":"J","10":"T","9":"9","8":"8","7":"7","6":"6","5":"5","4":"4","3":"3","2":"2"}
              self.hands = 0
              self.tothands = 0
              self.handlist = []


       def find_holdcards(self,data):
              holdcards = []
              for item in data:
                     if 'Dealt to' in item:
                            item = item[-7:-2]
                            if item[1] == item[4]:
                                   if int(self.trump.get(item[0])) > int(self.trump.get(item[3])):
                                          item = item[0] + item[3] + 's'
                                   else:
                                          item = item[3] + item[0] + 's'
                            else:
                                   if int(self.trump.get(item[0])) > int(self.trump.get(item[3])):
                                          item = item[0] + item[3] + 'o'
                                   elif item[0] == item[3]:
                                          item = item[0] + item[3]
                                   else:
                                          item = item[3] + item[0] + 'o'
                            
                            holdcards.append(item)
              return holdcards

       def count_holdcards(self,list):
              
              totlist = []
              i = 0
              while i < 13:
                     j=0
                     rowlist = []
                     rowhandlist = []
                     while j < 13:
                            if i < j:
                                   hand = (self.r_trump.get(str(14-i))+self.r_trump.get(str(14-j))+"s")
                                   count = list.count(hand)
                                   rowlist.append(count)
                            elif i == j:
                                   hand = (self.r_trump.get(str(14-i))+self.r_trump.get(str(14-j)))
                                   count = list.count(hand)
                                   rowlist.append(count)    
                            else:
                                   hand = (self.r_trump.get(str(14-j))+self.r_trump.get(str(14-i))+"o")
                                   count = list.count(hand)
                                   rowlist.append(count)                                                                  
                            self.hands += count
                            #print(hand + ":" + str(count))
                            rowhandlist.append(hand)
                            j += 1
                     self.handlist.append(rowhandlist)
                     totlist.append(rowlist)
                     i += 1
              return totlist


plotgraph.py


import numpy as np
import matplotlib.pyplot as plt

class Plotgraph:
       def __init__(self):
              pass




       def writegraph(self,countlist,hand,count,tothands):
              x = np.arange(len(countlist))
              width = 0.75
              rects = plt.bar(x, countlist, width)
              plt.xlabel("i × "+str(count)+"hands")
              plt.ylabel("count of "+hand)
              plt.title("hand = "+hand+" , totalhands = "+str(tothands))
              for rect in rects:
                     height = rect.get_height()
                     plt.annotate('{}'.format(height),
                            xy=(rect.get_x() + rect.get_width() / 2, height),
                            size=7,
                            xytext=(0, 3),
                            textcoords="offset points",
                            ha='center', va='bottom')
              plt.show()


Recommended Posts

(Python) Ich habe 1 Million Hände analysiert ~ Wie oft wird AA verteilt? ?? ~
(Python) Ich habe 1 Million Hände analysiert ~ ① Handaggregation starten ~
(Python) Ich habe versucht, 1 Million Hände zu analysieren ~ Ich habe versucht, die Anzahl der AA ~ zu schätzen
Ich möchte einen Python-Generator viele Male iterieren
Ich habe viel recherchiert, wie Python ausgeführt wird
Wie viele Arten von Python haben Sie in Ihrem Windows 10? Ich hatte 5 Typen.