fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6. import java.util.Random;
  7. import java.util.stream.Stream;
  8.  
  9. /* Name of the class has to be "Main" only if the class is public. */
  10. class Ideone
  11. {
  12. public static void main (String[] args) throws java.lang.Exception
  13. {
  14. final int count = 10_000_000;
  15. final int doorsCount = 3;
  16. boolean changeDoor = true;
  17. int wins = 0;
  18. Random random = new Random();
  19.  
  20. for (int i = 0; i < count; i++) {
  21. int winingDoor = random.nextInt(doorsCount);
  22.  
  23. int selectedDoor = random.nextInt(doorsCount);
  24. Integer closedDoor = Stream.of(0, 1, 2).filter(door -> door != winingDoor && door != selectedDoor)
  25. .findAny()
  26. .get();
  27.  
  28. if (random.nextBoolean()) {
  29. int newDoorNumber = 3 - closedDoor - selectedDoor;
  30. if (newDoorNumber == winingDoor) {
  31. wins++;
  32. }
  33. } else {
  34. if (selectedDoor == winingDoor) {
  35. wins++;
  36. }
  37. }
  38.  
  39. }
  40. System.out.printf("Doors: %s, wins: %s, percent %s", count, wins, (double) wins / count);
  41. }
  42. }
Success #stdin #stdout 1.17s 120784KB
stdin
Standard input is empty
stdout
Doors: 10000000, wins: 4997248, percent 0.4997248