Ein kleines Matheproblem (Details unten)

Kokujou

Lieutenant
Registriert
Dez. 2017
Beiträge
948
Hallo~
Ich hab ein kleines stochastisches Problem und wollte mal kurz überprüfen ob ich richtig gedacht habe:

Gegeben sei ein Kartenspiel. Jede Karte kann mit einer bestimmten wahrscheinlichkeit P eingesammelt zu werden. Um einen "Yaku" y zu bekommen müssen c(y) eingesammelt werden. Gesucht ist nun die Wahrscheinlichkeit diesen Yaku y erlangen zu können.
Zu beachten ist dass auch mehr als c(y) Karten zu einem Yaku gehören können.

Mein Ansatz dabei ist erstmal c(y)-1 Karten blind aufzumultiplizieren, das ist die Basiswahrscheinlichkeit.
Dann summiere ich alle restlichen Wahrscheinlichkeiten auf und multipliziere das mit der Basiswahrscheinlichkeit.

Da die Reihenfolge der Karten ja egal ist hatte ich gehofft dass das ausreicht, ich bin mir aber nicht sicher, ob das so legitim ist.

Ich habs nochmal in C# formuliert:
C#:
foreach (YakuProperties yakuProp in this)
                {
                    if (!yakuProp.IsPossible) continue;
                    int count = 0;
                    float baseProb = 1;
                    float addProb = 0;
                    foreach (CardProperties cardProp in cardProperties)
                    {
                        if (!yakuProp.yaku.Contains(cardProp.card)) continue;
                        if (cardProp.Probability > 0)
                        {
                            count++;
                            baseProb *= cardProp.Probability;
                            if (count >= yakuProp.yaku.minSize - 1)
                            {
                                addProb += cardProp.Probability;
                            }
                        }
                    }
                    yakuProp.Probability = baseProb * addProb;
                }
 
deine Problemstellung ist glaube nicht vollständing.

es ist nicht erkennbar was die ausgangssituation und der weitere Ablauf ist. dementsprechend kann deine Wahrscheinlichkeit quasi zwischen 0 und 100 liegen :D
 
Mein Mathestudium ist evtl. zu lange her: aber ich raffe nicht was du vor hast.

Was ist Yaku? Deine Methode ist mir ebenfalls (mathematisch) unklar...
 
  • Gefällt mir
Reaktionen: BeBur, Hexxxer76 und Rage
Okay ich wollte euch den größeren Kontext eigentlich ersparen aber wohl nicht erfolgreich.
Wie gesagt geht es um ein Kartenspiel. Ein japanisches Kartenspiel namens Hanafuda. Ein Yaku ist eine Konstellation von Karten. Es gibt 48 Karten im Spiel und einfach ausgedrückt ist ein Yaku eine Funktion, der eine Karte auf einen Wahrheitswert abbildet. Also Enthält oder nicht enthält. Darum auch die Contains Funktion im C# Code.

Das Spielfeld ist so aufgebaut: Es gibt Karten auf dem Spielfeld, die von beiden Spielern eingesammelt werden können. Es werden nach jedem Spielzug eine Karte vom Deck aufs Feld gezogen und die Spieler haben am Anfang je 8 Karten auf der Hand. Also ein Maximum von 8 Spielzügen.

Ich baue an einer KI für dieses Spiel. Jede Karte hat eine Bestimmte Wahrscheinlichkeit. Eine Karte kann eingesammelt werden wenn man von der Hand oder beim Ziehen vom Deck denselben Monat auf dem Feld findet. Ist dies nicht möglich kann man auch eine Karte aufs feld legen.

Das bedeutet wiederum dass sowohl die Karten auf der Hand des Gegners als auch einige vom Deck von dem aktiven Spieler theoretisch und mit einer bestimmten Wahrscheinlichkeit erreichbar sind. Was diese Zahlen angeht kann man vermutlich nura uf einen möglichst guten Näherungswert hoffen.

Diese Wahrscheinlichkeiten sind in meinem Problem erstmal gegeben. Dei Wahrscheinlichkeit einen Yaku aufzubauen ist folglich die Wahrscheinlichkeit aller an diesem Yaku beteiligten Karten.

Ein Beispiel: nehmen wir den Sankou Yaku. Sankou bedeutet du brauchst 3 Karten des Typs "Lichter". Welche 3 das sind ist egal. Insgesamt gibt es 5.

Ich habe mir gedacht die Wahrscheinlichkeit ist: P(c1) * P(c2) * (P(c3) + P(c4) + P(c5))

Vielleicht versteht ihr jetzt was ich vorhabe :)

PS: Ich bin selbst nicht sonderlich firm in Statistik wie ihr sicherlich erahnen könnt. Vielleicht ist meine Lösung ja auch kompletter Unsinn. Auf jeden Fall wäre ich für jede Hilfe dankbar.
 
Zuletzt bearbeitet:
Als ich yaku googelte habe ich nur xxx gefunden... hast du links...

Fang mit der Formel an, was ist jetzt die Funktion c1 bis c5 textlich&mathematisch?

P.S. Wahrscheinlichkeitsrechnung ist zum Glück nicht so schwer 😃

Ach hanufuda heißt das Game 😅 lol
 
Zuletzt bearbeitet:
Kokujou schrieb:
einfach ausgedrückt ist ein Yaku eine Funktion, der eine Karte auf einen Wahrheitswert abbildet.

einfach ^^

anyway

der ablauf des spiels macht die sache ein wenig kompliziert, zumal ich es mir im moment noch nicht vorstellen kann. nichtsdestotrotz scheint die einzelwahrscheinlichkeit mehrstufig zu sein. Ich versuche meinen ansatz mal weniger mathematisch zu formulieren, bzw an einem simpleren Bespiel zu verdeutlichen.

Achtung: Womöglich schieß ich hier gerade komplett am ziel vorbei, dann sorry

deine Gesamtwsk deine 3 Yaku karten zu kriegen, berechnet sich aus der Multiplikation der Wsk eine Karte (egal welche) zu kriegen, mit der wsk der zweiten und dann der dritten.

jetzt zum Beispiel (UrnenmodellKlassiker): hast 12 bunten kullern in einem topf. 3 weis, 3 rot, 3 blau, 3 gelb.
jetzt willst du je eine rote, blaue und gelbe ziehen.

WSK(rot/gelb/blau) = 9/12 (irgendeine, sagen wir gelb)
wsk(eine der beiden fehlenden farben) = 6/11(gesamt noch 11 weil eine weg, 3 rot, und 3 blau, gelb ist egal)
wks(die letzte) = 3/10 (verbleibende farbe hat noch 3 kullern)

gesamt wsk ist dann das Produkt, also hier rund 12%

hoffe das hilft

edit: wohl gemerkt ist das nur die wsk wenn du 3 kullern der entsprechenden farben in den ersten drei zügen ziehen willst. -- wenn jetzt noch mehr züge als treffer dazu kommen muss man noch permutation (aka mögliche pfade zum ziel) einbeziehen, dann kann das bissel aufwendig werden
 
https://en.wikipedia.org/wiki/Koi-Koi

Im Beispiel sagte ich ja 5 Karten passen auf den Yaku also die Karten c1, c2, c3, c4, c5.

also wenn ich vom Grundprinzip richtig bin freue ich mich. Die Ereignisse sind unabhängig zumindest approximiert.

Aber ich kann es ja ein anderes Beispiel nehmen. Sagen wir wir haben 5 Kugeln in der Urne, die alle eine Unterschiedlcihe Einzelwahrscheinlichkeit des Ziehens haben. Wie hoch ist die Wahrscheinlichkeit mindestens 3 zu ziehen? Das wäre theoretisch die Wahrscheinlichkeit 3 zu ziehen + die Whkt 4 zu ziehen + 5 zu ziehen.

Wo ich mir nicht sicher bin sind die unterschiedlichen Wahrscheinlichkeiten. Bei gleichen Wahrscheinlichkeiten wäre mein Ansatz dann wohl richtig, aber wie ist es bei unterschiedlichen?

Ist 2*3* (4+5+6) = 6*5*(4+3+2) ? offenbar nicht. Also irgendwo denke ich falsch.
 
Kokujou schrieb:
2*3* (4+5+6) = 6*5*(4+3+2) ?
? die Rechnung erschließt sich mir nicht

zu deinem Beispiel: zuerst stellen sich die zwei Grundfragen der Stochastik:
bleiben die kugeln nach dem ziehen vorhanden, d.h. mit zurücklegen?
Wie oft wird gezogen?

bei zurücklegen hast du konstante Wahrscheinlichkeiten und die sache ist relativ einfach
anderfalls kann das ganze hässlich werden weil sich die Wahrscheinlichkeiten eine kugel zu ziehen ändern, je nachdem was schon raus ist. das ganze wird dann dadurch auf die spitze getrieben das sich das ändern der Wahrscheinlichkeiten ändern würde, je nachdem was gezogen wurde
 
Ich habe mir gedacht die Wahrscheinlichkeit ist: P(c1) * P(c2) * (P(c3) + P(c4) + P(c5))
Das ist, wie von dir im letzten Post angemerkt, nicht korrekt, wenn die Wahrscheinlichkeiten P(c1) bis P(c5) nicht identisch sind. Du kannst entweder verschiedene Szenarien geeignet zusammenfassen oder dir alle Elementarereignisse aufschreiben.
 
Schaut euch mal Videos vom Spiel an: das ist echt schwer das abzubilden, da die Karten nur so hin und her fliegen zwischen Stapeln...
 
Oh Gott Leute Reinforcement Learning... ML... Zu lange her XD

Ich komme ja kaum mit dem Schreiben hinterher.

Also die Wahrscheinlichkeiten sind konstant aber verschieden, belassen wir es erstmal dabei.
Die Anzahl der Züge ist ebenfalls konstant aber muss dynamisch in die Formel eingebbar sein.

Formulieren wir es so: Ein Yaku beschreibt quasi eine Urne mit x Kugeln darin. Also x Karten die zu ihm passen. Und es müssen mindestens y Kugeln gezogen werden um den Yaku als "eingesammelt" bezeichnen zu können. Kugeln. Karten... Was weiß ich XD

Gibts irgendne möglichkeit das mathematisch auszudrücken ohne dass ich jedes Ereignis einzeln aufschreiben muss? Ich kann ja schlecht in jedem code jede Karte einzeln abschreiben.
 
TheGreatMM schrieb:
Schaut euch mal Videos vom Spiel an: das ist echt schwer das abzubilden, da die Karten nur so hin und her fliegen zwischen Stapeln...

hab mir auch gerade die regeln durchgelesen, da muss man glaube schon in die spieltheorie gehen, zu viele mögliche Variationen im verlauf
 
Und ich dachte ich such mir mal n simples Spiel und bau ne KI als Masterarbeit. Jedenfalls kann sich niemand mehr über die fehlende komplexität beschweren.
 
Ja, es gibt mit ziemlicher Sicherheit Möglichkeiten, diese Wahrscheinlichkeiten auszudrücken, ohne jedes Elementarereignis einzeln aufzuschreiben. Es wird aber sicherlich trotzdem sehr komplex werden.
 
Okay konstruieren wir doch mal ein paar Minimalbeispiele.
Wenn wir z.B. nur 2 Karten im Topf haben und nur 2 Brauchen ist es simpel: Multiplizieren ... oder addieren?... Durchschnitt? Durchschnitt klingt sinnvoll. Also (P(c1) + P(c2))/2
 
KI? Nicht ernsthaft oder? Beschränke dich auf ein einfaches Ereignis und bilde das erstmal sauber ab. Multiplizieren wäre das ohne zurücklegen, Google Urnenmodell
 
Nehmen wir jetzt mal an wir haben 3 Karten die passen und nur 2 müssen eingesammelt werden.
Also die Wahrscheinlichkeit c1 und c2 o. c1 und c3 o. c2 und c3 o. c1, c2 u. c3 einzusammeln.

addiere ich jetzt die durchschnitte?
 
Kokujou schrieb:
Okay konstruieren wir doch mal ein paar Minimalbeispiele.
Wenn wir z.B. nur 2 Karten im Topf haben und nur 2 Brauchen ist es simpel: Multiplizieren ... oder addieren?... Durchschnitt? Durchschnitt klingt sinnvoll. Also (P(c1) + P(c2))/2

durchschnitt ist falsch asfaik. kommt immer drauf an wie oft du es versuchen willst. bei 2 mal ist es sowas wie (p1+p2)/(p1+p2)^2 glaube Schwachsinn

das drei karten problem wird dann schon wieder komplizierter

edit: und das minimalbeispiel setzt voraus das die karten nach dem ziehen trotzdem im topf bleiben
 
Zuletzt bearbeitet:
Ich dachte auch erst multiplizieren aber... warum? Multiplzieren heißt erst passier das, dann ds. Kettenregel gilt doch für Ereignisse die aufeinander folgen.

Es wird aber vielleicht einfacher wenn wir es so annähern dass alle Karten quasi gleichzeitig eingesammelt werden. dass wir auf einmal versuchen alle Karten auf einmal zu ziehen. Das ist zwar nicht realistisch aber vielleicht ein guter Näherungswert.
Ergänzung ()

Bedenkt bitte dass ich die Wahrscheinlichkeit der Karten noch ausrechnen muss.
In die Karten ist ja auch noch integriert nach wieviel zügen ich sie frühstens erreichen kann.

Aktuell können wir zur Not auch davon ausgehen dass die Wahrscheinlichkeit eine Karte überhaupt einzusammeln eine Kombination davon ist sie im 1., 2., 3., 4., ..., 8. Zug einzusammeln.
 

Ähnliche Themen

Zurück
Oben