fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. class Ideone
  9. {
  10. public static void main (String[] args) throws java.lang.Exception
  11. {
  12. List<Boolean> deck = new ArrayList<Boolean>();
  13. int hits = 9;
  14. int size = 45;
  15.  
  16. for (int i = 1; i <= size; ++i) {
  17. if (i <= hits) {
  18. deck.add(true);
  19. }
  20. else {
  21. deck.add(false);
  22. }
  23. }
  24.  
  25. List<Boolean> nvDeck = new ArrayList<Boolean>();
  26. int nvSize = 41;
  27.  
  28. for (int i = 1; i <= nvSize; ++i) {
  29. if (i <= hits) {
  30. nvDeck.add(true);
  31. }
  32. else {
  33. nvDeck.add(false);
  34. }
  35. }
  36.  
  37. int iterations = 1000000;
  38. int successes = 0;
  39. int failures = 0;
  40.  
  41. int draws = 6;
  42. int nvDraws = 5;
  43.  
  44. for (int i = 1; i <= iterations; ++i) {
  45. if (findHit(deck, draws)) {
  46. successes++;
  47. }
  48. else {
  49. if (findHitWithMull(nvDeck, nvDraws)) {
  50. successes++;
  51. }
  52. else {
  53. failures++;
  54. }
  55. }
  56. }
  57. System.out.println("SUCCEEDS " + ((float)successes/(float)iterations)*100.0 + "%");
  58. }
  59.  
  60. private static boolean findHitWithMull(List<Boolean> deck, int draws) {
  61. return findHit(deck, draws) ? true : findHit(deck, draws);
  62. }
  63.  
  64. private static boolean findHit(List<Boolean> deck, int draws) {
  65. Collections.shuffle(deck);
  66. for (int i = 0; i < draws; ++i) {
  67. if (deck.get(i)) {
  68. return true;
  69. }
  70. }
  71. return false;
  72. }
  73. }
Success #stdin #stdout 0.84s 4386816KB
stdin
Standard input is empty
stdout
SUCCEEDS 98.27340245246887%