Programmieren Intellij Mathematischer 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.

Woher ich das weiß:Berufserfahrung – Softwareentwickler & Admin

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.