fork(2) download
  1. #include <stdio.h>
  2. #include <time.h>
  3. #include<stdlib.h>
  4. int choose_target(int m[]){
  5.  
  6. if(m[1]<=m[2] && m[1]<=m[3] && m[2] <= m[3]){ //1<2<3
  7. if (m[1] != 0) return 1;
  8. else if (m[2] != 0) return 2;
  9. else return 3;
  10. }
  11. if(m[1]<=m[2] && m[1]<=m[3] && m[3] <= m[2]){ //1<3<2
  12. if (m[1] != 0) return 1;
  13. else if (m[3] != 0) return 3;
  14. else return 2;
  15. }
  16. if(m[2]<=m[1] && m[1]<=m[3] && m[2] <= m[3]){ //2<1<3
  17. if (m[2] != 0) return 2;
  18. else if (m[1] != 0) return 1;
  19. else return 3;
  20. }
  21. if(m[2]<=m[3] && m[3]<=m[1] && m[2] <= m[1]){ //2<3<1
  22. if (m[2] != 0) return 2;
  23. else if (m[3] != 0) return 3;
  24. else return 1;
  25. }
  26. if(m[3]<=m[1] && m[1]<=m[2] && m[3] <= m[2]){ //3<1<2
  27. if (m[3] != 0) return 3;
  28. else if (m[1] != 0) return 1;
  29. else return 2;
  30. }
  31. if(m[3]<=m[2] && m[2]<=m[1] && m[3] <= m[1]){ //3<2<1
  32. if (m[3] != 0) return 3;
  33. else if (m[2] != 0) return 2;
  34. else return 1;
  35. }
  36.  
  37.  
  38. }
  39.  
  40.  
  41. int main(void) {
  42. int target[5],hit,bomb,count=0;
  43. srand(time(NULL));
  44. int sample = 10000000;
  45. for (int i=1;i<=sample;i++){
  46. target[0]=5;
  47. target[1]=11;
  48. target[2]=14;
  49. target[3]=14;
  50. target[4]=19;
  51. for (int j=1;j<=5;j++){
  52.  
  53. hit = choose_target(target); //選三嘲諷血最低
  54.  
  55. target[hit]--; //目標-1
  56. do{
  57.  
  58. bomb = (rand()%5); //炸彈目標
  59.  
  60. }while(target[bomb]==0); //非0血目標
  61.  
  62. target[bomb] = target[bomb] - (rand()%4) - 1; //炸彈造成傷害
  63.  
  64. if(target[bomb]<0)target[bomb]=0;
  65. }
  66.  
  67. for (int k=6;k>=1;k--){ //六張牌抽牌 內有三炸彈
  68. int draw = (rand()%k) + 1 ;
  69. if(draw>=4)target[4]=target[4]-5;
  70. else break;
  71.  
  72. }
  73.  
  74. if(target[4]<=0) count++;
  75.  
  76. }
  77. printf("percentage: %.6f",((float)count)/sample);
  78. return 0;
  79. }
  80.  
Success #stdin #stdout 1.3s 9424KB
stdin
Standard input is empty
stdout
percentage: 0.019927