Programmieren Intellij Mathematischer Fehler?
Mit 0,25 % entscheidet sich ein Mensch bei Gefahr vorne für Unentschieden
In 0,5 % der Fälle entscheidet sich dann der Cyborg für die Entscheidung des Menschen. Warum kommt hier für Actual 21,914 heraus und nicht annährend 12,5?
Wo ist der Mathematische Fehler?
2 Antworten
In der ersten Zeile der Cyborg-Klasse vergleichst du die Entscheidungen, rufst für den return-Wert allerdings nochmal das entscheide() des Menschen auf. Das liefert dann aber einen neuen Wert, der nicht mehr "BREMSEN" sein muss.
UNENTSCHIEDEN ist daher nicht nur 0,25*0,5, sondern zusätzlich bei 0,75*0,25 (Bremsen*Unentschieden der 2. Abfrage), was aber mit deinem Ergebnis auch nicht stimmt, weil das 31,25 gibt.
Die erste Abfrage in Cyborg.entscheide() trifft im Schnitt auf 3/4 aller Aufrufe zu und liefert eine menschliche Entscheidung. Das restliche Viertel liefert 50/50 eine menschliche Entscheidung. Zusammen sind also 3/4+1/8=7/8 aller Cyborg-Entscheidungen menschlich, was zu 7/32=0,21875 mal UNENTSCHIEDEN führt.
Das passt nicht wirklich zu Deiner Beschreibung. Wahrscheinlich willst Du im ersten Fall (gleiche Entscheidung) genau diese zurückgeben. Dazu musst Du die Werte zwischenspeichern oder r.entscheide() aufrufen, was ja sicher wieder denselben Wert berechnet.
Im anderen Fall (p=1/4) war der Mensch unentschieden. Also gibst Du 50/50 entweder dieses UNENTSCHIEDEN (statt einer neuen Entscheidung) oder r.entscheide() zurück.
So bekommst Du in 1/4·1/2=1/8 aller Aufrufe ein UNENTSCHIEDEN.