public class Ziegenproblem {
static boolean wechsel = false;
public static int zufall() {
// Die Zufallsfunktion soll die Zahlen von 0 bis 2 gleichverteilt zurückgegeben
int z
= (int) (Math.
random() * 3000
);
if (z <= 1000) return 0;
if (z <= 2000) return 1;
if (z <= 3000) return 2;
return 0;
}
public static long runTest(long intHaufigkeit) {
int richtigesTor = 0;
int ersteWahl = 0;
int offenesTor = 0;
int zweiteWahl = 0;
int anzAutos = 0;
for (int i=0; i <= intHaufigkeit; i++) {
// Der Spielleiter stellt hinter eines der Tore ein Auto
richtigesTor = zufall();
// Der Spieler wählt eines der Tore aus
ersteWahl = zufall();
// Der Spielleiter öffnet ein Tor mit einer Ziege, nicht aber das was der Spieler gewählt hat
offenesTor = ersteWahl;
for (int j=0; j < 3;j++) {
if ((j!=ersteWahl) && (j!=richtigesTor)) offenesTor = j;
}
// Der Spielleiter bietet dem Spieler an nun noch einmal das Tor zu wechseln
if (wechsel) {
// Der Spieler entscheidet sich dafür
zweiteWahl = ersteWahl;
for (int j=0; j < 3;j++) {
if ((j!=ersteWahl) && (j!=offenesTor)) zweiteWahl = j;
}
}
else {
// Der Spieler bleibt bei seiner Entscheidung
zweiteWahl = ersteWahl;
}
// Auswertung
if (zweiteWahl==richtigesTor) anzAutos++;
}
return anzAutos;
}
public static void main
(String[] args
) {
wechsel = false;
long ohneWechsel = runTest(100000);
wechsel = true;
long mitWechsel = runTest(100000);
System.
out.
println("Häufigkeit ohne Wechsel:\t" + ohneWechsel
);
System.
out.
println("Häufigkeit mit Wechsel:\t" + mitWechsel
);
}
}