Advertisement
Guest User

montyhall

a guest
Dec 3rd, 2019
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Groovy 2.03 KB | None | 0 0
  1. // Das Ziegenproblem, Drei-Türen-Problem, Monty-Hall-Problem oder Monty-Hall-Dilemma
  2. //
  3. // Zwei Kandidaten, Alfred und Berta, spielen mit Monty Hall in einer Fernsehshow um
  4. // einen Hauptgewinn. Es gibt 3 Tore, hinter einem der Tore ist der Gerwinn, die beiden
  5. // anderen enthalten eine Niete (den Zonk).
  6. //
  7. // Ablauf des Spieles: der Kandidat wählt ein Tor, daraufhin öffnet Monty eines der beiden
  8. // übrigen Tore, das eine Niete ist.
  9. // Alfred bleibt bei seinem Tor, Berta wechselt immer auf das andere Tor, das Monty nicht
  10. // geöffnet hat.
  11. //
  12. // Frage: hat Berta dadurch eine höhere Chance auf den Gewinn?
  13.  
  14. Random rnd = new Random();
  15.  
  16. int alfred = 0;
  17. int berta = 0;
  18. int runden = 30000;
  19.  
  20. // gibt eine zufallszahl >= 0 und < max
  21. def zufallstor()
  22. {
  23.     def r = rnd.nextInt() % 3; // % ist division mit rest (modulo)
  24.    
  25.     while (r < 0) // rnd.nextInt kann Zahlen < 0 zurückgeben
  26.     {
  27.         r = rnd.nextInt() % 3;
  28.     }
  29.     return r;
  30. }
  31.  
  32. for (int i = 0; i < runden; i++)
  33. {
  34.     // Vorbereitung: wir verstecken den Gewinn hinter einem Tor
  35.     def gewinn = zufallstor();
  36.    
  37.     // die Kandidaten tippen auf ein Tor
  38.     def tip = zufallstor();
  39.    
  40.     // der Showmaster öffnet eines der Tore, das der Kandidat nicht
  41.     // gewählt hat und das nicht den Gewinn beinhaltet
  42.     def zonk = 0;
  43.     while(tip == zonk || gewinn == zonk)
  44.     {
  45.         zonk = zonk + 1;
  46.     }
  47.    
  48.     // Alfred bleibt bei seinem Tor
  49.     def alfredGewinnt = tip == gewinn;
  50.    
  51.     // Berta wechselt zu dem anderen Tor
  52.     tip = (tip + 1) % 3; // wechsel zum nächsten tor (0 -> 1, 1 -> 2, 2 -> 0)
  53.     if(tip == zonk)
  54.     {   // wenn das nächste tor die niete ist...
  55.         tip = (tip + 1) % 3; // ...das übernächste nehmen
  56.     }
  57.    
  58.     def bertaGewinnt = tip == gewinn;
  59.    
  60.     if (alfredGewinnt) {
  61.         alfred = alfred + 1;
  62.     }
  63.     if (bertaGewinnt) {
  64.         berta = berta + 1;
  65.     }
  66. }
  67.  
  68. println("Gewinne - Alfred: $alfred (${(int)(alfred / runden * 100)}%) Berta: $berta (${(int)(berta / runden * 100)}%)");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement