❤️ Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! ❤️
Unterstützen Sie das LibreOffice-Forum und helfen Sie uns, unser Ziel für 2025 zu erreichen!

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱


❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Kombinationsliste 52 über 5 erstellen

CALC ist die Tabellenkalkulation, die Sie immer wollten.
Antworten
Baneling
Beiträge: 3
Registriert: So 26. Jul 2015, 12:55

Kombinationsliste 52 über 5 erstellen

Beitrag von Baneling » So 26. Jul 2015, 13:06

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 ;)

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Kombinationsliste 52 über 5 erstellen

Beitrag von F3K Total » So 26. Jul 2015, 14:18

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! :roll:
  • 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
Dateianhänge
Karten_ziehen.ods
(12.52 KiB) 73-mal heruntergeladen
Windows 11: AOO, LO Linux Mint: AOO, LO

Baneling
Beiträge: 3
Registriert: So 26. Jul 2015, 12:55

Re: Kombinationsliste 52 über 5 erstellen

Beitrag von Baneling » So 26. Jul 2015, 14:55

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 :P
Ein Zufallsgenerator hilft mir da dann leider nicht weiter^^

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2580
Registriert: Fr 10. Dez 2010, 10:01

Re: Kombinationsliste 52 über 5 erstellen

Beitrag von karolus » So 26. Jul 2015, 17:17

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
LO25.2.x.y debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)

Baneling
Beiträge: 3
Registriert: So 26. Jul 2015, 12:55

Re: Kombinationsliste 52 über 5 erstellen

Beitrag von Baneling » So 26. Jul 2015, 17:56

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.


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten