fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. int rollDice(void);
  6.  
  7. int main() {
  8. int wins[22] = {0};
  9. int losses[22] = {0};
  10. int winSum = 0;
  11. long totalRolls = 0;
  12.  
  13. srand(time(NULL));
  14.  
  15. for (int i = 0; i < 1000000; i++) {
  16. int sum = rollDice();
  17. int rollCount = 1;
  18. int gameStatus;
  19. int point = 0;
  20.  
  21. if (sum == 7 || sum == 11) {
  22. gameStatus = 1;
  23. } else if (sum == 2 || sum == 3 || sum == 12) {
  24. gameStatus = 2;
  25. } else {
  26. gameStatus = 0;
  27. point = sum;
  28. }
  29.  
  30. while (gameStatus == 0) {
  31. sum = rollDice();
  32. rollCount++;
  33.  
  34. if (sum == point) {
  35. gameStatus = 1;
  36. } else if (sum == 7) {
  37. gameStatus = 2;
  38. }
  39. }
  40.  
  41. totalRolls += rollCount;
  42.  
  43. if (rollCount > 21) {
  44. rollCount = 21;
  45. }
  46.  
  47. if (gameStatus == 1) {
  48. wins[rollCount]++;
  49. winSum++;
  50. } else {
  51. losses[rollCount]++;
  52. }
  53. }
  54.  
  55. for (int i = 1; i <= 20; i++) {
  56. printf("Won on roll %d: %d\n", i, wins[i]);
  57. }
  58. printf("Won after roll 20: %d\n\n", wins[21]);
  59.  
  60. for (int i = 1; i <= 20; i++) {
  61. printf("Lost on roll %d: %d\n", i, losses[i]);
  62. }
  63. printf("Lost after roll 20: %d\n\n", losses[21]);
  64.  
  65. printf("Chances of winning: %.2f%%\n", (winSum / 1000000.0) * 100);
  66. printf("Average game length: %.2f rolls\n", totalRolls / 1000000.0);
  67.  
  68. return 0;
  69. }
  70.  
  71. int rollDice(void) {
  72. int die1 = 1 + rand() % 6;
  73. int die2 = 1 + rand() % 6;
  74. return die1 + die2;
  75. }
Success #stdin #stdout 0.08s 5316KB
stdin
Standard input is empty
stdout
Won on roll 1: 221869
Won on roll 2: 76771
Won on roll 3: 55098
Won on roll 4: 39539
Won on roll 5: 27943
Won on roll 6: 20085
Won on roll 7: 14402
Won on roll 8: 10230
Won on roll 9: 7391
Won on roll 10: 5319
Won on roll 11: 3912
Won on roll 12: 2715
Won on roll 13: 1946
Won on roll 14: 1420
Won on roll 15: 1044
Won on roll 16: 752
Won on roll 17: 505
Won on roll 18: 441
Won on roll 19: 264
Won on roll 20: 206
Won after roll 20: 546

Lost on roll 1: 111004
Lost on roll 2: 111227
Lost on roll 3: 79909
Lost on roll 4: 57624
Lost on roll 5: 40915
Lost on roll 6: 29783
Lost on roll 7: 21269
Lost on roll 8: 15396
Lost on roll 9: 11114
Lost on roll 10: 8022
Lost on roll 11: 5868
Lost on roll 12: 4212
Lost on roll 13: 3066
Lost on roll 14: 2237
Lost on roll 15: 1645
Lost on roll 16: 1157
Lost on roll 17: 871
Lost on roll 18: 619
Lost on roll 19: 435
Lost on roll 20: 346
Lost after roll 20: 883

Chances of winning: 49.24%
Average game length: 3.38 rolls