Seite 1 von 1
Kombinationsliste 52 über 5 erstellen
Verfasst: So 26. Jul 2015, 13:06
von Baneling
Hallo,
Vorweg: Ich bin ein Calc, Excel, etc. Beginner also bitte nicht zu viel von mir erwarten
Ich würde gerne eine Tabelle erstellen die pro Zeile eine Kombinationsmöglichkeit bestehend aus 5 Karten (aus einem Kartendeck mit 52 Karten, Reihenfolge egal) anzeigt. Dabei sollen die insgesamt 2.598.960 Möglichkeiten zumindest anhand der ersten Karte sortiert sein: z.B. zuerst alle Möglichkeiten mit Kreuz 2, dann Karo 2, Pik 2, Herz 2, Kreuz 3, etc..
Ich freue mich auf eure Antworten

Re: Kombinationsliste 52 über 5 erstellen
Verfasst: So 26. Jul 2015, 14:18
von F3K Total
Moin,
kannst Du mal erklären, wofür du so eine Liste gebrauchen möchtest?
- Überblicken wirst du sie nicht

- ausgedruckt würde der Stapel etwa 3,6 Meter hoch sein!

- Calc und meiner Meinung nach auch Excel haben maximal 1.048.576 Zeilen

Wie wäre es mit einem Zufallsgenerator?
Siehe Anlage, Makros muss du erlauben.
Damit das Makro laufen darf, stellst du unter Extras/Optionen/LibreOffice/Sicherheit/Makrosicherheit mindestens die Stufe "Mittel" ein, dann wirst du beim Öffnen von Dokumenten gefragt, ob du Makros ausführen möchtest.
Gruß R
Re: Kombinationsliste 52 über 5 erstellen
Verfasst: So 26. Jul 2015, 14:55
von Baneling
Danke für die Antwort
Wir wollen ein Programm schreiben, welches die Gewinnwahrscheinlichkeit eines Blattes beim Multi Poker während dem Spielen anzeigt. Bei dieser Pokervariante zieht zuerst der Spieler 5 Karten und dann die Bank 5 Karten, wobei die Bank dem Spieler eine ihrer Karten zeigt. Eine allgemeine Formel für das Errechnen der Wahrscheinlichkeit eines Blattes durch den Computer fällt mir nicht ein, weshalb ich auf eine Tabelle bestehend aus 52 über 5 Kombinationen zurückgreifen möchte. Dabei soll der Computer alle Einträge darauf überprüfen ob diese bei meinem Blatt möglich sind (Wenn ich den Karo König habe ist dieser beim Computer ausgeschlossen) und ob mein Blatt gewinnt und so Ergebnis für Ergebnis die Gewinnwahrscheinlichkeit anpassen.
Alternativ könnte ich das in mehrere Tabellen aufteilen
Ein Zufallsgenerator hilft mir da dann leider nicht weiter^^
Re: Kombinationsliste 52 über 5 erstellen
Verfasst: So 26. Jul 2015, 17:17
von karolus
Hallo
Wie kommst du eigentlich auf die Idee die Aufgabe mit Hilfe von Calc zu lösen?
Eine allgemeine Formel für das Errechnen der Wahrscheinlichkeit eines Blattes durch den Computer fällt mir nicht ein,
Du hast sie bereits genannt, die Wahrscheinlichkeit eines bestimmten Blatts 5 aus 52 beträgt 1
/2.598.960
Ein paar Gedankenansätze in `Python`-code formuliert:
Code: Alles auswählen
from itertools import combinations
from random import choice
carddeck = set((color, value) for color in 'KPHC' for value in range(1,14))
# alle Kombinationen
allcombinations = tuple(combinations(carddeck,5))
#Spiel
#dein Blatt
yours = choice(allcombinations)
print(yours) #z.b. (('K', 2), ('H', 11), ('K', 11), ('H', 10), ('P', 8))
# wir nehmen deine Karten raus
restdeck = carddeck.difference(yours)
restcombinations = tuple(combinations(restdeck, 5))
# das Blatt der Bank
bank = choice( restcombinations )
print(bank) # kontrolle z.B. (('P', 12), ('H', 1), ('P', 5), ('P', 4), ('C', 4))
#du kennst `yours` und eine Karte von `bank`:
seen = choice(bank)
print(seen) # du lässt dir die Karte zeigen # z.B. ('P', 5)
#aus deiner Sicht musst du die Gewinnausicht deiner Karten, mit einer
#gemittelten Gewinnausicht der übrigbleibenden Möglichkeiten vergleichen
#deren pure Anzahl ist:
restdeck = restdeck.difference((seen,))
possiblecards = tuple((seen,) + combi for combi in combinations(restdeck,4) )
print(len(possiblecards)) #163185
def gewinnaussicht(blatt, others):
# hier bist du an der Reihe,
# ich kenne die Pokerregeln nicht
pass
Re: Kombinationsliste 52 über 5 erstellen
Verfasst: So 26. Jul 2015, 17:56
von Baneling
Mit Wahrscheinlichkeit meinte ich die Gewinnwahrscheinlichkeit meines Blattes, tut mir Leid.
Die "Tabelle" vom Programm während der Ausführung erstellen zu lassen erschien mir als nicht optimiert da mehrere Runden hintereinander gespielt werden (wie lange bräuchte denn ein PC etwa für die Erschaffung von 163185 Kombinationen und den Vergleich mit der eigenen Hand? - Versuche ich possiblecards auszugeben, so hängt sich das Programm auf).
Mit dem Erstellen vor Programmstart würde doch weniger Rechenleistung verlangt werden, oder nicht? Natürlich müsste trotz allem die eigene Hand noch in den Vergleich mit den anderen möglichen gestellt werden um die Gewinnwahrscheinlichkeit zu bestimmen.