Methoden Mathematische Strukturen in Java umwandeln

Develop

Neues Mitglied
Hallo,

Es geht um ein Würfelspiel. Kurz erklärt kann jeder der beiden Spieler so oft würfeln, wie er mag und die Summe der Augen wird aufaddiert. Wenn er jedoch eine 1 würfelt, bekommt er nur eine 1 aufgeschrieben und sein Gegenüber ist an der Reihe. So geht das hin und her, bis bsps.-weise jemand 100 "Punkte" erreicht hat.
So: Ich hab jedenfalls 3 ineinerander verschachtelte Arrays initialisiert von wegen

int [][][] arr = new int [j][k];
,wobei i mein momentaner Punktestand sein soll, j der Punktestand meines Gegenübers und k bezeichnet immer die Zwischensumme von demjenigen, der Gerade am Würfeln ist und nach Beendigung dann auf i oder j (je nachdem, wer dran ist aufaddiert wird). So weit, so gut.

Jetzt will ich im nächsten Schritt eine Methode schreiben, welche die jeweiligen Wahrscheinlichkeit berechnen für den Sieg des Spielers, der i Punkte momentan hat.
Das will ich in jedem Zug berechnen , um später entscheiden zu können, ob es sinnvoller ist nach bsps.-weise 3mal würfeln aufzuhören oder doch lieber weiterzuwürfeln, da der andere kurz vorm gewinnen ist mit 99 Augen, wobei das Spiel bei 100Augen vorbei ist....

Jedenfalls möchte ich jetzt einfach nur die Wkt. in jedem Spielzug i,j,k ausrechnen und sie im oben genannten Array abspeichern.
Der mathematische Algorithmus ist: Im folgenden sehr ihr die Formulierung, mit der ich momentan noch gar nichts anfangen kann!!!

Sei i der eigene Gesamtpunktestand, j der Gesamtpunktestand des Gegners und k die
in diesem Zug bereits erspielten Punkte. Nun sei Pi;j;k die Wahrscheinlichkeit dass der Spieler
gewinnt. Dann gilt:
P i;j;k = 1 wenn i + k >= N
P i;j;k = 0 wenn j >=N
Diese beiden Dinge habe ich mit if ohne Probleme formulieren können:
if ((i+k)>= goal){arr[j][k]= 0;break;}
if ((j+k)>= goal){arr[j][k]= 1;break;}
Das Break bemängelt er noch, aber sonst..... denk ich ok....

Bei i + k >= N (ist mein Goal) kann der Spieler sofort aufhören und hat gewonnen. Wenn j >= N hat der
gegnerische Spieler gewonnen. Im allgemeinen Fall mit 0 <= i; j < N (ist mein Goal) entscheidet der Spieler, ob er weiter würfelt (roll) oder mit dem Zug aufhört (hold) je nach dem welche von den beiden
Möglichkeiten höhere Gewinnchancen hat:

P (i;j;k) = max(P_roll (i;j;k) ; P_hold (i;j;k))
Dabei ist P_roll (i;j;k) die Wahrscheinlichkeit zu gewinnen falls man weiter würfelt und Phold (i;j;k) falls
man sofort aufhört:
P_roll (i;j;k) = 1/6
((1 - P (j,i+1,0) + P(i,j,k+2) + P(i,j,k+3) + P(i,j,k+4) + P(i,j,k+5) + P(i,j;k+6)

P_hold(i,j,k) = 1 - P(j,i+max(k,1),0
Die Wahrscheinlichkeit zu gewinnen, wenn man mit dem würfeln aufhört (oder wegen einer 1
aufhören muss), entspricht der Wahrscheinlichkeit, dass der Gegner im nächsten Zug verliert.
Die anderen Fälle entsprechen dem Gewinn durch höhere Punktzahlen.......

In dem mathematischen Code wusste ich nicht, wie ich den Indey ausdrücken soll. Deshalb bitte () als Index ansehen außer bei max(k,1),0

Entschuldigt die Unstrukturiertheit, jedoch siehts leider genauso gerade in meinem Kopf aus xD
Für nützliche Tips wäre ich außerordentlich dankbar, die Wahrscheinlichkeiten der mathematischen Struktur in Java-Code umzusetzen. Ich versuchs hier mal weiter...

Danke im Voraus
 

Michael...

Top Contributor
So: Ich hab jedenfalls 3 ineinerander verschachtelte Arrays initialisiert von wegen

int [][][] arr = new int [j][k];
,wobei i mein momentaner Punktestand sein soll, j der Punktestand meines Gegenübers und k bezeichnet immer die Zwischensumme von demjenigen, der Gerade am Würfeln ist und nach Beendigung dann auf i oder j (je nachdem, wer dran ist aufaddiert wird). So weit, so gut.

Oder eben auch nicht gut ;-) Warum ein dreifach verschachteltes Array? Du willst/musst doch nur drei Werte speichern? Oder habe ich da was falsch verstanden? Warum dann überhaupt ein Array? Und wenn ein Array, warum dann nicht ein einfaches Array mit der Länge drei?
Code:
int[] punkte = new int[3];
 
S

SlaterB

Gast
benötigt werden diverse Objekte Wahrscheinlichkeit P mit verschiedenen Werten für die drei Indexe i,j,k

P(3,2,1) ist interessant, aber auch P(2,1,1) und wer weiß wie viele,
ein dreidimensionales Array ist als Umsetzung dafür durchaus eine reale Option,
vergleichbar mit Schachfeld-Felder F(0,0), F(8,7) usw.
 

Zeeu

Aktives Mitglied
Ist das 3D Array so vorgegeben oder hast du alle freiheiten im code die du willst ? ^^
es werden in dem 3D array aber nur die Aktuellen werte verglichen, wieviele Punkte habe ich, wieviele der gegner und wieviele hat wer auch immer grad gewürfelt

Edit: das spiel geht bis 100 Punkte, was macht es für einen Sinn, vorher aufhöhren zu würfeln ?

Wenn ich jetzt z.B. 3x hintereinander die 6 gewürfelt habe, bin ich zwar erst bei 18 Punkten, aber der Wahrscheinlichkeit nach habe ich gewonnen wenn der andere nur 3x5 gewürfelt hat und kann das spiel vorzeitig gewinnen, oder wie soll das mit dem aufhören genau aussehen ?
 
Zuletzt bearbeitet:

muckelzwerg

Bekanntes Mitglied
Das spiel haben sie z.B. bei Schlag den Raab gespielt. Gibt es in lauter Varianten.
Du versuchst Punkte zu sammeln und musst "pokern" wie lange Du hintereinander würfelst. Gibst Du ab, bekommst Du die Punkte aufgeschrieben, bist Du zu gierig und wirfst irgendwann die 1, bekommst Du keine Punkte (bzw 1 Punkt)
 

henpara

Bekanntes Mitglied
benötigt werden diverse Objekte Wahrscheinlichkeit P mit verschiedenen Werten für die drei Indexe i,j,k
Oder man rechnet sie in Abhänigkeit der drei Zahlen i,j,k jedesmal schnell aus.

Array würde wohl wieder heißen, daß man Höchstgrenzen immer vorher festsetzen muss.
 

Crian

Top Contributor
Wahrscheinlichkeitsrechnung... -.- für mich ist die chance für ne 1 immer 1/6 !

Wahrscheinlichkeiten lassen sich oft gut über das Gegenteilige Ereignis berechnen.

Bei einem Wurf eine 1 zu würfeln hat die Wahrscheinlichkeit von 1/6, wie du gesagt hast.
Bei einem Wurf keine 1 zu würfeln, hat die Wahrscheinlichkeit 5/6.

3 mal zu würfeln, ohne eine 1 zu werfen hat die Wahrscheinlichkeit 5/6 * 5/6 * 5/6 = 5*5*5/6*6*6 = 125/216 = ca. 0.5787, also ungefähr 58 %

Bei zehn Würfen wären es 5^10 / 6^10 = ca. 0,1615 also etwa 16%. Natürlicher Weise ist es, je öfter man wirft, immer unwahrscheinlicher, bei allen Würfen keine eins dabei zu haben. Aber natürlich ist nach dem 9 Wurf die Wahrscheinlichkeit, im 10. Wurf eine 1 zu würfeln, immer noch 1/6.
 

Zeeu

Aktives Mitglied
dann könnte man ja einfach die anzahl der würfe mitzählen, und sich daraus wie du Sie es getan haben, die warscheinlichkeit berechnen.
Die dürfte ja nicht davon abhängen, was man gewürfelt hat, sondern wie oft man eben keine 1 gewürfelt hat.
 
G

Gast2

Gast
Naja, musst du aus dem Blickwinkel sehen:

Wenn ich jetzt würfel und wette keine 1 zu haben ist die Chance das ich meine Wette gewinne bei 5/6. Wenn ich aber wette das ich 10 mal Würfel ohne eine 1 zu haben liegt meine Chance die Wette zu gewinnen bei ~16%. Sind zwei paar Schuhe.

Es ist schon richtig das die Chancen der individuellen Würfe von einander unabhängig sind.
 

Develop

Neues Mitglied
Vielen Dank an alle, die sich Gedanken gemacht haben.
Zur Erklärung:

Ich hab jetzt ein array erstellt "double [][][] arr= [j][k]...
fülle es mit allen Zwischenergebnissen i= meine Punkte, j=Gegnerpunkte und k=momentaner Spielzug.
Im nächsten Schritt nutze ich die zwischengespeicherten Werte, um mit angegebener Formel ( P als neue Methode computeWinningProbability()) die Wahrscheinlichkeit immer zu berechnen und neu in den 3 Arrays zwischenzuspeichern.

Im letzten Schrit gebe ich einfach die Wahrscheinlichkeit von P_Roll und P_Hold in nem Vergleich zurück.(Wkt. Roll and Hold sind als Formel gegeben)
Wenn die Wahrscheinlichkeit von Roll größer ist, spiel ich weiter, ansonsten stop. Darum kümmert sich dass vorgegebene Framework..
Da ihr das Framework und die komplette Aufgabenstellung nicht sehen konntet, war es wahrscheinlich echt schwierig zu verstehen, was ich meine....

Danke trotzdem für alle Bemühungen!
Musste die Formeln nur stupide übernehemen, hab wie immer zu kompliziert gedacht.... xD
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Kingdako Wie löse ich eine Mathematische Formel mit Arrays und Schleifen? Java Basics - Anfänger-Themen 32
L mit Fakultät mathematische Formel berechnen Java Basics - Anfänger-Themen 5
F Arrays: Mathematische Funktion Java Basics - Anfänger-Themen 19
E Mathematische Aufgabe: Antwort entspricht nicht der Lösung Java Basics - Anfänger-Themen 5
C mathematische Symbole im Kommentar Java Basics - Anfänger-Themen 1
B Anwender soll mathematische Funktion eingeben können, Einfachster Fnktionsplotter Java Basics - Anfänger-Themen 4
J kleiner Fehler im FAQ Parser für mathematische Formeln Java Basics - Anfänger-Themen 5
N mathematische Funktion Java Basics - Anfänger-Themen 29
L Mathematische zeichen Java Basics - Anfänger-Themen 10
D Mathematische Rechnung als String Java Basics - Anfänger-Themen 4
T Ausdrucksparser für Mathematische Ausdrücke Java Basics - Anfänger-Themen 15
M Bisektionsverfahren (Mathematische Funktion) Java Basics - Anfänger-Themen 6
data89 Frage zum FAQ-'Parser für mathematische Formeln' Java Basics - Anfänger-Themen 4
M Mathematische Funktion: Ableiten Java Basics - Anfänger-Themen 2
D Mathematische Funktionen Zeichnen Java Basics - Anfänger-Themen 2
B Mathematische Funktionen Java Basics - Anfänger-Themen 3
Q mathematische Operationen als Methode und nicht Infix-Operator Java Basics - Anfänger-Themen 14
Spin Kompexe Mathematische Formeln Java Basics - Anfänger-Themen 10
G Mathematische Frage Java Basics - Anfänger-Themen 7
D Unicode für mathematische/statistische Zeichen. Java Basics - Anfänger-Themen 3
S Mathematische Zeichen (z.B. Alpha) ausgeben Java Basics - Anfänger-Themen 2
M Mathematische Funktionen zeichnen. Java Basics - Anfänger-Themen 2
A mathematische Funktionen grafisch darstellen Java Basics - Anfänger-Themen 8
E Das mathematische "!" in Java Java Basics - Anfänger-Themen 5
O mathematische Formel in quellcode Java Basics - Anfänger-Themen 5
B Mathematische funktionen Berechnen und ausgeben lassen?WIE? Java Basics - Anfänger-Themen 2
M mathematische zeichen und schreibweise in java Java Basics - Anfänger-Themen 5
J XML-Strukturen für REST-Service erstellen Java Basics - Anfänger-Themen 1
U JNA: Strukturen erzeugen Java Basics - Anfänger-Themen 8
M Verschachtelte Strukturen. Java Basics - Anfänger-Themen 7
G Strukturen Java Basics - Anfänger-Themen 2
G Strukturen in Java Java Basics - Anfänger-Themen 2
M in Textfile Strukturen erkennen Java Basics - Anfänger-Themen 5
S Strukturen in Java Java Basics - Anfänger-Themen 9
T komplexe Strukturen in Servlet-Context speichern möglich? Java Basics - Anfänger-Themen 5
J Keine Strukturen in Java Java Basics - Anfänger-Themen 9
H .java Dateien in Eclipse einbinden und ausführen Java Basics - Anfänger-Themen 1
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
richis-fragen Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
JaZuDemNo Java im Studium Java Basics - Anfänger-Themen 7
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
V Java-Ausnahmebehandlung: Behandlung geprüfter Ausnahmen Java Basics - Anfänger-Themen 1
krgewb Java Streams Java Basics - Anfänger-Themen 10
A Überwältigt von der komplexen Java Welt Java Basics - Anfänger-Themen 29
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
John_Sace Homogene Realisierung von Generics in Java ? Java Basics - Anfänger-Themen 19
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
R mit Java API arbeiten Java Basics - Anfänger-Themen 9
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
Timo12345 JNLP File mit Java öffnen Java Basics - Anfänger-Themen 2
S Video Editierung mit Java.._ Java Basics - Anfänger-Themen 2
F Einstelungen in Java - CursorBlinkRate Java Basics - Anfänger-Themen 10
A PHP $_POST["name"] in Java Java Basics - Anfänger-Themen 3
vivansai21 Is there a oneliner to create a SortedSet filled with one or multiple elements in Java? Java Basics - Anfänger-Themen 9
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
Arjunreddy Can someone please tell me how to use a debugger in BlueJ(a Java environment) Java Basics - Anfänger-Themen 1
M Java assoziationen (UML) Java Basics - Anfänger-Themen 8
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
xXGrowGuruXx Java einstieg, leichte sache 0 verstanden Java Basics - Anfänger-Themen 7
A java.sql.SQLException: Data type mismatch. Java Basics - Anfänger-Themen 1
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
A Lerngruppe Java Java Basics - Anfänger-Themen 2
G Help me in the Java Program Java Basics - Anfänger-Themen 2
L Java- Vererbung Java Basics - Anfänger-Themen 4
LimDul Suche Java Stream Tutorial Java Basics - Anfänger-Themen 2
_so_far_away_ Ich möchte Java lernen Java Basics - Anfänger-Themen 11
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
V Bild per Java Script austauschen Java Basics - Anfänger-Themen 7
MoxMorris this Keyword in Java Java Basics - Anfänger-Themen 14
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
wolei JAVA Zeitdifferenz feststellen. Java Basics - Anfänger-Themen 4
DiyarcanZeren Rekursion in Java Java Basics - Anfänger-Themen 5
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17
monsterherz Circle.java:5: error: <identifier> expected Java Basics - Anfänger-Themen 2
julian-fr Wie kann ich am besten Java lernen? Java Basics - Anfänger-Themen 17
A Java-Properties und -RessourceBundles Java Basics - Anfänger-Themen 5
lrnz22 Java-Basics-Aufgabe Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben