Ein kleines Matheproblem (Details unten)

1. Wieso hat jede Karte eine eigene Wahrscheinlichkeit?
2. Speicher die Ergebnisse doch ab und hol sie dir aus einer DB.

Wieso willst du überhaupt die Wahrscheinlichkeit berechnen? Wenn ich 4 von 5 Karten habe, dann weiß ich doch, welche ich will und muss nichts berechnen. Wenn ich 3 von 5 habe, weiß ich auch, welche der Karten für mich interessant sind.
 
och kommt schon leute... ich geb mir doch wirklich alle mühe aber dann halt zum 24. mal:
Wir reden hier nicht von einem Zufallsexperiment! das hier ist kein "Wir ziehen 3 Kugeln aus einer Urne und legen 2 Zurück" oder so.

Jede Karte hat einen unterschiedlichen Wert. Sie liegt auf unterschiedlichen Orten und wenn sie z.B. auf der Hand des Gegners liegt hat der Spieler ja nicht dieselbe Wahrscheinlichkeit sie ziehen zu können als wenn sie direkt vor ihm aufm Feld oder sogar auf seiner eigenen Hand liegt!

Und DB geht auch nicht denn die Karten werden doch gemischt und kein Zustand ist identisch. Es sei denn du schlägst vor dass ich für jede Kartenmischung nen Eintrag in ner DB anlege das werden dann ein paar GB, da wird sich der Nutzer freuen ^^
Ergänzung ()

Und jetzt kommen wir zu meinem Problem. Mein Code sieht inzwischen so aus:
771281


Wir haben hier also (n über k) Terme die am Ende addiert werden die alle so aussehen:
P(K_1) * P(K_2) * ... * P(K_(outputLength-1)) * (P_(outputLength) + P_(outputLength+1) + ... + P(numberRange))

Und das steht jetzt halt n über k mal untereinander. Und mein Algorithmus braucht nach den ersten Hochrechnung dafür 17 Minuten. 17. Minuten. Für ein bischen Mathe.

Also helft mir bitte irgendwie die Formel dafür zusammenzufassen dass vielleicht irgendwo mehr Potenzen stehen oder vielleicht ignoriere ich die statistische Genauigkeit und komplett und rechne einfach die Summe aller Kartenwahrscheinlichkeiten geteilt durch die Mindestanzahl das ist zwar nicht schön oder korrekt aber wenigstens ein Wert den ich in tragbarer Zeit ausrechnen kann.
 
Also ich lese grundsätzlich noch mit, weiß aber auch nicht so wirklich weiter. Außerdem habe ich unter der Woche natürlich weniger Zeit für's Forum.
Was mit von deiner Seite noch fehlt, ist eine ausführliche (vollständige) und eindeutige Beschreibung (in Worten), was du überhaupt tun willst.
Den Code kann ich schlecht verfolgen. Erstens kenne ich mich mit C# nicht besonders aus, zweitens kann ich nicht nachvollziehen, welche Variablen denn überhaupt für was stehen. Was ist bspw. outputLength? Was ist last?

Wenn wir dein Vorgehen hier besser verstehen würden, könnten wir dir eher Tipps zur Laufzeitoptimierung geben. Sowas wie "Brich die Berechnug ab, wenn die Wahrscheinlichtkeit für etwas 0,001 unterschreitet". Aber wie gesagt, ohne ausführliche Erläuterung deines Vorgehens kann ich persönlich deinem Algorithmus nicht folgen.
 
  • Gefällt mir
Reaktionen: new Account()
Nagut dann beschreibe ich mal was der Algorithmus inzwischen tut:
Ich gehe von der Problemstellung aus "Bestimme die Wahrscheinlichkeit mindestens k von n Karten einzusammeln".

Die Wahrscheinlichkeiten der Karten findet sich in der Liste CardProperties, outputLength ist dann quasi das k, numberRange das n.

Wie gehe ich also vor. Ich erstelle zuerst mal eine Liste in der alle Zahlen von 0 bis numberLength stehen.

Als nächstes erzeuge ich alle outputLength-stelligen Kombinationen (keine Wiederholungen ohne Beachtung der Reihenfolge) von den Zahlen 0 bis einschließlich numberlength. Ich nutze ganze Zahlen weil die dann am Ende mit den IDs der obigen cardProperties Liste verknüpft werden.

Das sind die Basiswahrscheinlichkeiten. Jetzt kommt der Zusatz. Dieser wird gebildet indem man aus der vorhergestellten Liste mit den Zahlen von 0 bis numberRange alle entfernt die in der aktuellen Kombination vorkommen. Also sagen wir numberRange = 4 und outputLength = 2 und wir haben gerade die Kombination P(0) * P(1) berechnet, dann fügen wir als nächstes P(2), P(3) und P(4) hinzu, diesmal aber als Summe. Sodass das Endresultat dieses Termes so aussieht:
P(0) * P(1) * (P(2) + P(3) + P(4))

Die Kombinationen aufzubauen war auch nur ein kleines lustiges Rätsel. Ich konstruiere ein Tupel der Länge outPutLength. Das besetze ich mit dem Startwert also sagen wir outputLength wäre 3 so ist der Ausgangswert (0,1,2)
Dann gehe ich von hinten an die Indizes durch, beginne also mit der 2. Diesen wert erhöhe ich bis zum Maximum. bei jeder erhöhung entsteht ein neues Tupel aus dem ich dann wie oben beschrieben den Term konstruiere.
Geht es nicht weiter gehen wir einen Index nach links. Wenn 2 also auf 4 gesetzut wurde machen wir bei der 1 weiter. Aber immer wenn das passiert setze ich alle nachfolgeterme auf die direkten Nachfolger des aktiven Terms. Also bei numberRange = 4:
Aktiver Index = 2
(0,1,2) -> (0,1,3) -> (0,1,4) ->
Aktiver Index = 1:
(0,2,3) -> ...

So kommen irgendwann, und ihr könnt das gerne selbst ausprobieren denn der Algorithmus ist ja gut skalierbar und auf jede Programmiersprache übertragbar, jede Kombination des Terms hervor. Ein bischen als würde man im Quintärcode schreiben ^_^ Immer wenn das Maximum erreicht ist erhöht sich der linke Wert um eins, der rechte Wert setzt sich aufs Minimum zurück, nur dass dabei die Sortierung gewahrt bleiben muss damit es zu keiner Wiederholung kommt und die Reihenfolge nicht beachtet wird.

Aber eigentlich ist das alles unwichtig. Wichtig ist es gibt n über k Terme der Struktur
P(0) * P(1) * ... * P(k-1) * (P(k) + P(k+1) + ... + P(n))

Der Worst Case Yaku hätte also die Laufzeit 24 über 10. Und das ganze passiert zeitgleich für 64 Zustände. Also brauche ich entweder eine Kompprimierung der Formel die die mathematischen Operationen reduziert (mir ist sowieso unklar warum ein Computer Probleme mit ein paar Millionen berechnungen hat. Wir reden hier vom GHz Berech sowas sollte eigentlich drinne sein... ), kA sowas wie P(0)^n * P(1)^n etc... irgendwas wo man weniger rechnen muss.

Oder aber eine Näherungslösung die das Verhältnis der Werte bewahrt aber weniger genau und daher weniger rechenintensiv ist. Sowas wie

(P(0) + P(1) + ... + P(n)) / k

Ich hab schon überlegt das direkt so zu machen denn alles wichtige ist drinne und wenn in jedem Zustand dieselbe Rechnung benutzt wird bleiben die verhältnisse gleich. Aber ein statistisch genaueres Vorgehen wäre schon schön.
 
1mrd additionen sind nicht schlimm für einen pc im bereich von ghz
Ohne wirklich details gelesen zu haben gehe ich stark davon aus, dass man nicht brute force einfach „alle möglichkeiten“ durchsuchen kann- ähnlich wie bei schach und go
Spiele wo das noch locker geht sind 4gewinnt und natürlich tictactoe

Was man im falle komplizierter spiele machen muss ist „schätzen“, welche pfade im suchbaum erfolgsversprechend sind, zb so:
https://de.wikipedia.org/wiki/Alpha-Beta-Suche?wprov=sfti1
 
Wenn ich dich richtig verstehe, dann schätzt du in einem ersten Schritt, der hier nicht zur Diskussion steht, für jede Karte im Spiel, die Wahrscheinlichkeit, dass sie irgendwann im Laufe des Spiels in den Besitz des Spielers gelangt. Die Summe dieser Einzelwahrscheinlichkeiten muss eins sein.
Kokujou schrieb:
"Wie groß ist die Wahrscheinlichkeit aus einem Pool von x interessanten Karten deren Wahrscheinlichkeit fix aber unterschiedlich ist mindestens y Karten zu ziehen."
Auf Grundlage dieser Schätzung möchtest du jetzt die Wahrscheinlichkeit berechnen, einen bestimmten Yaku zu erhalten.

Das ist dann einfach die Summe der Produktwahrscheinlichkeiten über alle Möglichkeiten y Karten aus dem Pool von x interessanten Karten zu ziehen.

Beispiel: Man benötigt zwei von drei interessanten Karten (a, b, c) um YakuXYZ zu erreichen.

P(YakuXYZ) = P(a) * P(b) + P(a) * P(c) + P(b) * P(c)

Du musst also nur noch einen effizienten Weg finden, alle Möglichkeiten, y Elemente aus einer Liste mit x Einträgen zu ziehen, zu durchlaufen. Mit Python geht das in einer Zeile. In C# ... keine Ahnung.
 
Okay ich brech das mal runter auf folgende Frage:

Was ist jetzt richtig? bei 2/3 Karten
P(Yaku) = P(1) * P(2) + P(2) * P(3) * P(1) * P(3)
oder kommt noch + P(1) * P(2) * P(3) hinzu?

meine viel zu laufzeitintensive formel behandelt zu viele Dopplungen und ist deswegen falsch...
 
Zuletzt bearbeitet:
Die Frage kann ich dir zur Abwechslung mal beantworten:
Richtig ist (entsprechend der Siebformel für drei Ergeignisse aus #52):
P(1)*P(2) +P(1)*P(3) + P(2)*P(3) - 2*P(1)*P(2)*P(3)
Man beachte, dass die Ereignisse A,B und C hierbei A={1 ∩ 2}, B = {1 ∩ 3}, C = {2 ∩ 3} sind und dass hier entsprechend
P(A∩B) = P(A∩C) = P(B∩C) = P(A∩B∩C) = P(1)*P(2)*P(3) (da 1 bis 3 ja stochastisch unabhängig).

Wenn du jedoch die Siebformel vollständig anwenden willst, erhälst du natürlich für die Frage nach k von n Karten (n über k) Kombinationen als Eingangsereignisse für die Siebformel und somit sum_i=1^j (j über i), j=(n über k) Summanden für die Gesamtwahrscheinlichkeit. Wobei sich viele dieser Summanden zusammenfassen lassen.

Wenn du den Weg mit der irgendwie gearteten Wahrscheinlichkeit, innerhalb eines Zugs eine bestimmte Karte zu ziehen, gehen willst, würde ich schlicht nur die erste Stufe [hier: P(1)*P(2) +P(1)*P(3) + P(2)*P(3)] nehmen.
 
  • Gefällt mir
Reaktionen: Kokujou
P(A∩B) = P(A∩C) = P(B∩C) = P(A∩B∩C) = P(1)*P(2)*P(3)
... was? Warte mal... was?! also das kann so nicht stimmen. Die Wahrscheinlichkeit der Karten sind nach wie vor Unterschiedlich und die Whkt. A und B zu ziehen ist nicht dieselbe wie A und C zu ziehen.

simpsonsfan schrieb:
Wenn du den Weg mit der irgendwie gearteten Wahrscheinlichkeit, innerhalb eines Zugs eine bestimmte Karte zu ziehen, gehen willst, würde ich schlicht nur die erste Stufe [hier: P(1)*P(2) +P(1)*P(3) + P(2)*P(3)] nehmen.

okay das klingt deutlich schöner. Ich hab das mal schnell angepasst und etwas komprimiert indem ich Wieder n bisl mit Klammern gearbeitet habe. So würde bei mir für diese Formel stehen:
P(1) * (P(2) + P(3) +
P(2) * P(3) +
P(3)
Die Summanden in der Klammer sind also die ID des letzten Faktors inkrementiert bis zum Maximum.
Das macht es etwas schlanker auf Dauer... sagen wir vielleicht. Und das Ergebnis ist dasselbe.

Und tatsächlich: 1/15 der Laufzeit. Allerdings immernoch 1 Sekunde pro Yaku. Wir müssen also noch weiter komprimieren denn selbst diese Formel hat eine extreme Laufzeit bei 10 aus 24
 
Jetzt hast du mich missverstanden. A, B, und C sind in dem Fall keine Karten sonderen die Kombinationen, also:
A - Karte 1 und 2
B - Karte 1 und 3
C - Karte 2 und 3

Und die Schnittmenge aus A und B ist entsprechend Karte 1 und Karte 2 und Karte 3. Da 1,2 und 3 als unabhängig angenommen werden, ist P(1 ∩ 2 ∩ 3) schlicht P(1)*P(2)*P(3).
Und logischerweise ist die Schnittmenge aus A und B und C ebenfalls Karte 1 und Karte 2 und Karte 3.
 
Okay dann lassen wir das so stehen.

Aber nach wie vor bleibt die Frage: Wie reduziere ich die Laufzeit noch weiter?
Ich meine konstruier dir das Gebilde mal bitte für 10/24 Karten da bist du in einem Jahr immer noch mit schreiben beschäftigt XD

Es kann natürlich nach wie vor auch mein Code sein der irgendwelche Fehler hat ... abe rich habe inzwischen keinerlei größeren Operationen mehr drinne wie LINQ Operationen es operiert alles auf Basisdatentypen bis auf das eine last-Array dass ich aber nicht kopiere sondern nur modifiziere.
 
Zuletzt bearbeitet:
Je mehr ich mir diese Threads zu diesem konkreten Thema anschau, desto weniger kann ich mich des Gefühls erwehren, daß das Modell nicht zum Problem paßt.

Es soll doch denk ich eine KI werden. Die KI hat in diesem Sinn natürlich insbesondere keinen(*) Einfluß auf andere Spieler, was diese tun oder lassen oder schlachmichtot.

Ergo ist die Zugwahrscheinlichkeit zunächst nicht x/48, sondern x/Kartenstapel. Die Wahrscheinlichkeit, eine fixe Karte K0 aus der Hand eines anderen Spielers zu erhalten, ist zunächst ebenso 0, wie die Wahrscheinlichkeit dafür, eine fixe Karte K1 aus der eigenen Hand zu erlangen, 1 ist ("falsch gegriffen" als aktiv hinzugefügte Fehlerwahrscheinlichkeit lassen wir mal außen vor).

Züge sind natürlich nicht voneinander unabhängig. Sie sind nicht gleichzeitig und sie sind auch nicht unabhängig von der eigenen Hand bzw der Karten da.

Ich brauch 5 Karten für einen Stich und habe davon vier + vor mir liegen 20 Karten (aus 48) => ich hab eine Chance von 1/28(#) für die EXAKT richtige. Brauch ich aber nicht exakt eine, sondern hab ich Auswahlmöglichkeiten - rote 2 geht und schwarze 8 auch --- dann summiert sich das und ich hab eine Chance von 2/28 bzw 1/14.

# ist natürlich nicht meine Zugwahrscheinlichkeit!

Die ganze Chose ist zustandsabhängig, wir können also eine Zustandsmaschine bauen und gucken.

Per Sternchen oben können wir, wenn wir das wollen, Spielerinteraktion in irgendeiner Form simulieren und Spieler gegenseitig beeinflussen (lassen). Dazu führen wir Buch über (sichtbare) Züge und versuchen Rückschlüsse anzustellen darüber, was der Kollege vielleicht haben wollen könnte UND (weitergehend) wo diejenige Karte ist, die ich selber haben will. Diese Wahrscheinlichkeit ist natürlich anders als die, meine Karte *unabhängig zu bekommen, dnn sie hängt von der Relevanz der Karte für den anderen Spieler ab (je wichtiger für ihn, desto weniger wahrscheinlich wird er sie mir verfügbar machen) plus natürlich die Wahrscheinlichkeit, eben jene Karte aus einer Auswahl der für ihn irrelevanten Karten zu legen.

Das Universum in sich ist eher irrelevant. Entscheidungen werden punktuell getroffen, nicht global, und das orientiert sich am fortschreitenden Zustand des Spiels, welcher wiederum definiert ist durch die (Kette der) Zustandsänderungen, über die man dorthin gekommen ist.

Das muß bewertet werden, Zug um Zug. Nicht mehr.
 
  • Gefällt mir
Reaktionen: BeBur und 0-8-15 User
Eins vorweg: Bitte helft mir diese schreckliche Matheformel zu optimieren. Wenns nicht geht und es nicht kleiner geht dann sagts mir und ich nehm nen Durchschnitt oder sonst irgendwas, mehr fällt mir dazu auch nicht ein.

Jetzt zum Speziellen:

Deine Abstraktion ist zu stark. Die Karten sind einfach viel zu individuell. Eine Karte hat einen Namen ein Motiv und einen Monat. Der Monat bestimmt welche Karten gepaart werden können. Nichtmal die Chance eine Karte aus der Hand einzusammeln ist 1 denn es ist auch möglich dass auf dem Feld kiene karte Liegt die mit dem Feld in Einklang gebracht werden kann.

Du meinst das summiert sich? Also das kann einfach nicht sein. bei 4/5 geht das ja noch aber du kannst mir nicht erzählen dass z.B. die Wahrscheinlichkeit im Stadium 3/5 Karten dann die Wahrscheinlichkeit aller übrigen karten ohne multiplikation einfach summiert wird um es dann durch die verbleibenden 28 zu teilen. Nein das kann es nicht sein...

Es gibt schon einen Grund warum ich dieses zugegeben nicht sehr schöne Modell verwende und der ist dass es einfach keine bessere Möglichkeit gibt die ich kenne.

Die Wahrscheinlichkeit von Yaku ("Stichen") zu berechnen aber nur für einen Zug ist ebenfalls sinnlos. Denn das bringt dir quasi gar nichts. Denn meine KI denkt ja schon einen Zug voraus. Sie wendet jeden möglichen Zug an. Anders gesagt wenn du einen Yaku hast, hast du ihn und wenn nicht, dann eben nicht. Wahrscheinlichkeiten sind nur deswegen nötig weil ich mir so die anderen 8!*4^8 Züge im Zustandsbaum quasi spare und sie mittels einer geeigneten Approximation in den Yaku-Wahrscheinlichkeiten zusammenfasse.

Nochmal in aller Klarheit: Wenn meine KI am Zug ist führe ich jeden der im worst Case 8*4 Züge aus (es gibt eine Fixe anzahl von 8 Spielzügen weil man in jedem Spielzug eine Karte spielen muss udn keine dazu kriegt)

In jedem dieser virtuellen Spielzüge berechne ich nun für jede Karte die Mindestanzahl Züge die erforderlich sind um sie zu ziehen. wenn sie z.B. auf dem Deck liegt ist es einfach. Wenn der Monat auf dem feld liegt ebenfalls. Wenn nicht wirds wieder schwerer. Wie sehr ich da ins Detail gehe werde ich sehen nachdem ich endlcih erste spielbare resultate habe.

Dann kommt die Wahrscheinlichkeit ins Spiel. Jede Karte hat Wahrscheinlichkeiten. Da spielen viele Faktoren mit. Welche Karten habe ich? Welche der Gegner? Meine aktuelle KI (quasi als Basis) kennt alle Karten. So habe ich erste Ergebnisse und kann die Gewichte für meine Bewertungsformel anpassen. der zweite Modus berechnet dann die Wahrscheinlichekit dass es diese, diese oder diese Karte ist etc... Was da nun rein spielt weiß ich ebenfalls nicht. Ob da nur reinspielt welche Karten ich habe, welche Züge ich spiele oder welche karten der gegner hat. Oder ob ich es tatsächlich wie du angedeutet hast über Sammlungswahrscheinlichkeiten mache also jede Karte auf dem feld bei 0.5 ist weil beide Spieler gleichberechtigt zugriff haben oder ob ich quasi einen Wettbewerb simuliere und für jeden Kartenmonat gucke wieviele Optionen der gegner auf die Karte hat und wie viele ich und daraus ne Wahrscheinlichkeit erstelle weiß ich auch noch nicht.

Wichtig ist aber: Ich habe eine Wahrscheinlichkeit. Und diese Wahrscheinlichkeit sagt nicht aus wie wahrscheinlich es ist sie in einem Zug einzusammeln. Das wäre völliger nonsens, dann bräuchte ich ja n ganzes Array von Wahrscheinlichkeiten oder ich komm gleich gar nicht dran. Stattdessen ist sie ein Näherungswert der sagt, wie wahrscheinlich es ist sie irgendwann im verlauf des Spiels einzusammeln.

Also muss ich jetzt lediglich diese Wahrscheinlichkeiten so kombinieren dass sie ein glaubwürdigen Wert für den Yaku abgeben. Das Feintuning des Wertebereiches dieser Funktion kannich ja dann über gewichte vornehmen.

Und dann kommt das ganze nochmal für jeden Folgezug des Gegners. Denn, ich möchte ja auch wissen ob ich dem Gegner sinnvolle Züge verbaue.

Kurz gesagt: Ich sammle alles was es über den aktuellen Spielzustand zu wissen gibt und kombiniere es zu einer Bewertungsfunktion. Und dafür brauche ich: Mathe. Und dieses blöde "Mathe" dauert jetzt 1 Minute pro Spielzug und das ist einfach nicht tragbar.

Also wieder zu meinem ersten Absatz: Bitte helf mir irgendjemand idese Formel zu komprimieren XD
 
Kokujou schrieb:
Was ist jetzt richtig? bei 2/3 Karten
P(Yaku) = P(1) * P(2) + P(2) * P(3) * P(1) * P(3)
Die Formel muss schon P(Yaku) = P(1) * P(2) + P(2) * P(3) + P(1) * P(3) lauten, sonst ist sie falsch.
Kokujou schrieb:
oder kommt noch + P(1) * P(2) * P(3) hinzu?
Streng genommen schon, denn alle drei Karten zu besitzen ist ja auch ein Yaku. Aber du wolltest ja eine Näherung.
 
Zuletzt bearbeitet:
Tja Laufzeittechnisch ist beides nach wie vor ein Alptraum. Ich werd mal versuchen statt mit floats mit doubles oder sogar integern zu arbeiten. Dabei verzichte ich zwar auf Präzision aber andererseits der unterschied zwischen 1% und 1.5% ist mir sowas von egal XD bei 10 Faktoren macht das den Kohl auhc nicht mehr fett.

Aber vermutlich werd ich die Laufzeit so auch nicht drücken können... Es ist schon merkwürdig dass das so extrem viel Zeit frisst. Gleichzeitig können tausende von grafischen Berechnungen innerhalb weniger Millisekunden stattfinden sodass da sogar noch ne Update-Routine laufen kann und man 60 frames pro sekunde rendern kann XD
Dagegen sind ein paar Millionen (Millionen, nicht Milliarden!) berechnungen doch wohl ein Witz.
 
Also in Python dauert die Berechnung für den 24er Yaku mit nicht optimiertem Code auch ca. eine Sekunde.
Mit C++ bekommt man sowas in der Regel mindestens um den Faktor 100 schneller hin.

Nachtrag: Ich hab mir mal die Spielregeln zu Koi-Koi, worum es hier scheinbar geht, durchgelesen. Und ich muss @RalphS zustimmen. Ohne die Wahrscheinlichkeiten nach jedem Spielzug anzupassen, kann da eigentlich nichts Vernünftiges bei rum kommen.

Aber vielleicht verstehen wir dich auch einfach immer noch falsch. Und du spielst das Spiel einfach nach jedem Zug virtuell zu Ende und berechnet dann die Gewinnwahrscheinlichkeiten für jeden möglichen Zug.

Du könntest die Sache auch ganz anders angehen. Du spielst jeden Zug sehr oft zufällig zu Ende und wählst den Zug, der am häufigstens gewinnt. Stichwort: Monte-Carlo
 
Zuletzt bearbeitet:
Das Modell-Problem wie Ralph es sprachlich gut aufgegriffen hat fängt damit an, dass zwar von Wahrscheinlichkeiten gesprochen wird, diese sich aber hier aber nicht auf Eins aufsummieren sollen. Der Ansatz ergibt für sich schon keinen Sinn und alles was man so aus der Wahrscheinlichkeitsrechnung kennt funktioniert damit voraussichtlich auch gar nicht.
 
Immer dieses auf eins Aufsummieren... Herrgott. Was ist denn wenn die Karte eine Wahrscheinlichkeit von 1 hat gezogen zu werden? Jede Addition mit irgendwas anderem würde dann sicherlich 1 übersteigen.

Aber gut wenn ihr meint dass es eh statistischer Unsinn ist dann nehm ich halt irgendeine 0815 Formel a la Summe durch minSize oder so.

Und bitte hört auf zu denken dass ich hier ganze Zugkonstellationen auszurechnen versuche. Ich will gerade das nicht tun. ich will nicht das ganze Spiel durchspielen. Darum versuche ich Näherungswerte zu bestimmendie mir dabei helfen die Zugqualität zu bestimmen ohne sie alle im Speicher durchzugehen! Darum berechne ich doch überhaupt erst die wahrscheinlichkeiten. Hätte ich alle Züge vor mir liegen bräuchte ich keine Wahrscheinlichkeiten sondern könnte einfach auszählen.
 
Zuletzt bearbeitet:
Kokujou schrieb:
Hätte ich alle Züge vor mir liegen bräuchte ich keine Wahrscheinlichkeiten sondern könnte einfach auszählen.
Deshalb empfehlen wir ja diesen Lösungsweg ...
Kokujou schrieb:
Was ist denn wenn die Karte eine Wahrscheinlichkeit von 1 hat gezogen zu werden?
Eine Wahrscheinlichkeit gibt die relative Häufigkeit für das Eintreten eines Ereignisses an. Eine Wahrscheinlichkeit von 1 bedeutet, dass das Ereignis immer eintritt.
Kokujou schrieb:
mir dabei helfen die Zugqualität zu bestimmen
Die "KI" soll also, wenn sie am Zug ist, einen "guten" Spielzug auswählen? Oder reden wir aneinander vorbei?

Nachtrag: Was ich überhaupt nicht verstehe, ist, was du mit "Wahrscheinlichkeit gezogen zu werden" meinst. Gezogen von wem und wovon? Aus dem Stapel verdeckter Karten?
 
Zuletzt bearbeitet:
Kokujou schrieb:
Immer dieses auf eins Aufsummieren... Herrgott. Was ist denn wenn die Karte eine Wahrscheinlichkeit von 1 hat gezogen zu werden? Jede Addition mit irgendwas anderem würde dann sicherlich 1 übersteigen.

Aber gut wenn ihr meint dass es eh statistischer Unsinn ist dann nehm ich halt irgendeine 0815 Formel a la Summe durch minSize oder so.
Wenn ein Ergebnis eine 100% Eintrittswahrscheinlichkeit hat, dann haben alle anderen Ergebnisse eine 0% Eintrittswahrscheinlichkeit.
Der Denkfehler liegt vermutlich darin, dass du das durcheinander bringst, was Ereignis und Ergebnis genannt wird. Ein Würfelwurf hat als mögliche Ergebnisse die Zahlen von Eins bis Sechs. Und ein Ereignis ist so etwas wie 'Die nächsten drei Würfe zeigen mindestens eine Sechs'.
Wenn du von Ereignissen die Summe bilden möchtest, dann musst du wie schon gesagt wurde, die Schnittmenge heraus rechnen, zum Beispiel bei 'Die nächsten drei Würfe zeigen mindestens eine Sechs' oder 'Die nächsten drei Würfe haben eine Summe größer als 10'. Deswegen übersteigt die Summe von Ereignissen niemals Eins.


Auf welcher Wissensgrundlage willst du denn die Wahrscheinlichkeiten wissen?
Aus Sicht eines normalen Spielers haben alle nicht aufgedeckten Karten natürlich erst einmal die gleiche Wahrscheinlichkeit im nächsten Zug gezogen zu werden / aufgedeckt zu werden / verfügbar zu sein.
 
Zuletzt bearbeitet: (selber die begriffe verwechselt :D)

Ähnliche Themen

Zurück
Oben