Bonusterne berechnen in Hearthstone


  • Mod

    Dudeldu schrieb:

    Denke den Anfangszustand O kann man weglassen

    So ist es. solltest du sogar. Der Anfangszustand ist in bengos Gleichung das (0.5, 0.5, 0, 0) (oder allgemeiner: (1-p, p, 0, 0)), das heißt, das erste Spiel gewinnt man mit einer Wahrscheinlichkeit von 0.5 (bzw p) oder verliert es mit W'keit 0.5 (bzw. p-1).

    Dann muss man ja nur noch herausfinden wie oft ein bestimmter Zustand nach gg Schritten besucht wurde :).

    Eben indem du die Matrix g-mal (beziehungsweise g-1 Mal, wenn du das erste Spiel weg lässt) mit sich selber multiplizierst. Und da kommt nach drei Schritten ein statisches Ergebnis bei heraus.



  • Sehr cool das Ganze. Mit dem einfachen System hat Blizzard direkt zwei Fliegen mit einer Klappe geschlagen. "Schlechte" Spieler machen dennoch Fortschritt und verlieren nicht den Spass am Spielen und "Gute" Spieler werden mit dritter Potenz durch das Bonussystem Belohnt und machen dementsprechend sehr schnell Sprünge nach vorn.

    Danke an alle die hier mitgeholfen haben :). Hat Spass gemacht die Lösung nach und nach zu erarbeiten (naja, "erhalten" trifft es wohl eher 😉 ).


  • Mod

    Dudeldu schrieb:

    "Gute" Spieler werden mit dritter Potenz durch das Bonussystem Belohnt und machen dementsprechend sehr schnell Sprünge nach vorn.

    Denk dran, dass das Maximum immer noch 2 ist, selbst bei 100% Gewinnrate 🙂



  • Dudeldu schrieb:

    Sehr cool das Ganze. Mit dem einfachen System hat Blizzard direkt zwei Fliegen mit einer Klappe geschlagen. "Schlechte" Spieler machen dennoch Fortschritt und verlieren nicht den Spass am Spielen und "Gute" Spieler werden mit dritter Potenz durch das Bonussystem Belohnt und machen dementsprechend sehr schnell Sprünge nach vorn.

    Danke an alle die hier mitgeholfen haben :). Hat Spass gemacht die Lösung nach und nach zu erarbeiten (naja, "erhalten" trifft es wohl eher 😉 ).

    Es ist die dritte Potenz einer Matrix, ich glaube das wirkt sich anders aus als bei reelen Zahlen größer 1. Dazu ist jeder eintrag der Matrix auch noch kleiner gleich 1.

    Ich hab von linearer Algebra leider nicht so viel Ahnung, wie ich gerne hätte, deshalb noch 2 Fragen. Macht es eigentlich einen unterschied, wenn man die Matrix transponiert? und gibt es irgentwelche einfachen wege um eine matrix zu potenzieren?



  • Bengo schrieb:

    Ich hab von linearer Algebra leider nicht so viel Ahnung, wie ich gerne hätte, deshalb noch 2 Fragen. Macht es eigentlich einen unterschied, wenn man die Matrix transponiert? und gibt es irgentwelche einfachen wege um eine matrix zu potenzieren?

    Wenn Du dafür auch die Vektoren transponierst und von der anderen Seite dran multiplizierst macht das keinen Unterschied. 😉 Ein einfacher Check ist, ob eine Wahrscheinlichkeitsverteilung auch wieder auf eine solche abgebildet wird. Zum Potenzieren ist es hier halt so, dass sich schon nach kurzer Zeit nichts mehr tut. Das ist ja auch nicht verwunderlich, schließlich hat man sehr wenige Zustände und schon nach kurzer Zeit ist es fast egal wo man angefangen hat, da immer wenn man einmal verliert man ja wieder an derselben Stelle ist, egal was vorher passiert ist.

    Will man eine Matrix allgemein potenzieren bietet sich natürlich klassisches square&multiply an, also A2b=(A2)bA^{2b} = (A^2)^b nutzen, und bei A2b+1=A2bAA^{2b+1} = A^{2b} \cdot A nutzen. Das nützt natürlich nur am Rechner was.

    Ansonsten kann man natürlich auch versuchen eine geeignete Zerlegung zu finden. Wenn eine Matrix zum Beispiel diagonalisierbar ist, dann lässt sie sich schreiben als A=S1DSA = S^{-1} D S, und damit ist An=S1DnSA^n = S^{-1} D^n S. Die Diagonalmatrix D lässt sich leicht potenzieren. Im Zweifelsfall kann man sich hier bestimmt auch mit einer Jordan-Normalform behelfen, das ist sicher besser als nichts. Das wird wohl nicht immer zum Ziel führen, aber ich denke damit kriegt man schon einiges in den Griff.



  • Kenner der algebraische G schrieb:

    Gelesen: "Bonusterne berechnen in Hartshorne"

    Das ist mir übrigens auch passiert. 😃



  • Die Kurven 2x12*x-1 und x3x^3 schneiden sich 2 mal im Intervall [0;1], bei x1=12(51)0.618x_1=\frac{1}{2}*(\sqrt{5}-1) \approx 0.618 und x2=1x_2=1. Hab nun versucht das zu interpretieren. Das bedeutet doch, dass man "optimal" spielt wenn man mit einer Winrate von x1,2x_{1,2} spielt, da man dort die meisten Sterne für die investierte Zeit erhält, nicht wahr?
    Oder auch anders ausgedrückt bei einer Winrate über 0.618\approx 0.618 ist der Fleißfaktor größer als der Skillfaktor.



  • Das Argument verstehe ich nicht. Das ist ja die Anzahl der Sterne pro Spiel. Je höher die Winrate, desto höher die Sterne pro Spiel, ergo: mehr spielen -> mehr Sterne. Fleiß gewinnt also auf jeden Fall. Allerdings wächst der Anteil eben nicht linear mit der Winrate, sondern anfangs etwas schneller und später etwas langsamer.



  • Hier noch eine Alternativlösung ohne Markov-Kette:
    Sei xix_i die ZV für das Resultat im i-ten Spiel mit win = 1, loss = 0 und E[x_i] =: p
    Dann ist die Anzahl der Sterne nach n >= 3 Spielen
    s=i=1n(2x_i1)+_i=3nx_ix_i1xi2s = \sum_{i=1}^n (2 x\_i - 1) + \sum\_{i=3}^n x\_i x\_{i-1} x_{i-2}
    Dann ist mit Linearität des Erwartungswert und Produkt von Erwartungswerten von unabhängigen ZVn:
    E[s] = n \cdot (2p-1) + (n-2) \cdot p^3



  • Dudeldu schrieb:

    bei x1=12(51)0.618x_1=\frac{1}{2}*(\sqrt{5}-1) \approx 0.618

    Welch überraschendes Auftauchen des https://de.wikipedia.org/wiki/Goldener_Schnitt


Anmelden zum Antworten