Advertisement
Guest User

Untitled

a guest
Jun 18th, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.85 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  5. <script src="https://cdn.jsdelivr.net/npm/lodash@4.17.11/lodash.min.js"></script>
  6. <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
  7.  
  8. <p>抽取機率請參考:<a href="https://f7.163.com/news/update/20181219/27047_791254.html" target="_blank">這裡</a><br></p>
  9. <table style="width:100%">
  10. <tr>
  11. <td>
  12. 可以抽幾次:<input maxlength="5" id="lottery" size="5" type="text" value="100" />
  13. </td><td>
  14. 模擬次數:<input maxlength="4" id="times" size="4" type="text" value="50" /> <button name="start" onclick="myFunction()">開始模擬</button>
  15. </td>
  16. </tr>
  17. <tr>
  18. <td>
  19. <div>
  20. 詳細結果:</p><textarea id="DetailResult" cols="50" rows="40"></textarea>
  21. </div>
  22. </td>
  23. <td>
  24. <div>
  25. 重點結果:</p><textarea id="SimpleResult" cols="50" rows="40"></textarea>
  26. </div>
  27. </td>
  28. </tr>
  29. </table>
  30.  
  31. <script>
  32. if (!String.format) {
  33. String.format = function (src) {
  34. if (arguments.length == 0) return null;
  35. var args = Array.prototype.slice.call(arguments, 1);
  36. return src.replace(/\{(\d+)\}/g, function (m, i) {
  37. return args[i];
  38. });
  39. };
  40. }
  41.  
  42. function validate() {
  43. var x;
  44.  
  45. x = $.trim($("#lottery").val());
  46. if (! _.isInteger(x)) {
  47. x = _.toInteger(x);
  48. }
  49. if (x == 0) {
  50. x = 100;
  51. }
  52. if (x < 0) {
  53. x = Math.abs(x);
  54. }
  55. $("#lottery").val(_.toInteger(x));
  56.  
  57. x = $.trim($("#times").val());
  58. if (! _.isInteger(x)) {
  59. x = _.toInteger(x);
  60. }
  61. if (x == 0) {
  62. x = 50;
  63. }
  64. if (x < 0) {
  65. x = Math.abs(x);
  66. }
  67. $("#times").val(_.toInteger(x));
  68. }
  69.  
  70. function myFunction() {
  71. /* 一般 S
  72. const s_fragment_min = 0;
  73. const s_fragment_max = 675;
  74.  
  75. const s_fragment_1_min = 0;
  76. const s_fragment_1_max = s_fragment_max / 3;
  77.  
  78. const s_fragment_2_min = s_fragment_1_max;
  79. const s_fragment_2_max = s_fragment_max * 2 / 3;
  80.  
  81. const s_fragment_3_min = s_fragment_2_max;
  82. const s_fragment_3_max = s_fragment_max;
  83.  
  84. const s_whole_min = s_fragment_max + 0;
  85. const s_whole_max = s_fragment_max + 25;
  86. */
  87. // /*
  88. // */ /* 特殊隙間 S
  89. const s_fragment_min = 0;
  90. const s_fragment_max = 400;
  91.  
  92. const s_fragment_1_min = 0;
  93. const s_fragment_1_max = s_fragment_max / 3;
  94.  
  95. const s_fragment_2_min = s_fragment_1_max;
  96. const s_fragment_2_max = s_fragment_max * 2.0 / 3;
  97.  
  98. const s_fragment_3_min = s_fragment_2_max;
  99. const s_fragment_3_max = s_fragment_max;
  100.  
  101. const s_whole_min = s_fragment_max + 0;
  102. const s_whole_max = s_fragment_max + 15;
  103. // */
  104.  
  105. validate();
  106. $("#DetailResult").val("");
  107. $("#SimpleResult").val("");
  108.  
  109. let guessResutl = 0;
  110. let detailResult = "";
  111. let simpleResult = "";
  112. let guess_count = _.toInteger($("#lottery").val());
  113. let simulation_count = _.toInteger($("#times").val());
  114. for(let i=1; i<=simulation_count; i++) {
  115. let got_s = false;
  116. let s1 = 0;
  117. let s2 = 0;
  118. let s3 = 0;
  119. for(let j=1; j<=guess_count; j++) {
  120. let guess = _.random(0, 10000, true);
  121. if (_.inRange(guess, s_fragment_min, s_fragment_max)) {
  122. let k = 0;
  123. if (_.inRange(guess, s_fragment_1_min, s_fragment_1_max)) {
  124. k = 1;
  125. s1 ++;
  126. }
  127. else if (_.inRange(guess, s_fragment_2_min, s_fragment_2_max)) {
  128. k = 2;
  129. s2 ++;
  130. }
  131. else if (_.inRange(guess, s_fragment_3_min, s_fragment_3_max)) {
  132. k = 3;
  133. s3 ++;
  134. }
  135. detailResult += String.format("模擬第 {0}回,抽第 {1}次:抽到 S 碎片 {2}\n", i, j, k);
  136. if (s1 * s2 * s3) {
  137. detailResult += String.format("模擬第 {0}回:湊齊碎片拼成整隻 S\n", i);
  138. simpleResult += String.format("模擬第 {0}回,抽第 {1}次:湊齊碎片拼成整隻 S\n", i, j);
  139. guessResutl++;
  140. got_s = true;
  141. }
  142. }
  143. else if (_.inRange(guess, s_whole_min, s_whole_max)) {
  144. detailResult += String.format("模擬第 {0}回,抽第 {1}次:抽到整隻 S\n", i, j);
  145. simpleResult += String.format("模擬第 {0}回,抽第 {1}次:抽到整隻 S\n", i, j);
  146. guessResutl++;
  147. got_s = true;
  148. }
  149.  
  150. if (!got_s && j == 180) {
  151. detailResult += String.format("模擬第 {0}回,抽第 {1}次:保底得到整隻 S\n", i, j);
  152. simpleResult += String.format("模擬第 {0}回,抽第 {1}次:保底得到整隻 S\n", i, j);
  153. guessResutl++;
  154. got_s = true;
  155. }
  156.  
  157. $("#DetailResult").val(detailResult);
  158. $("#SimpleResult").val(simpleResult);
  159. if (got_s) {
  160. break;
  161. }
  162. }
  163. detailResult += "\n";
  164. $("#DetailResult").val(detailResult);
  165. }
  166.  
  167. simpleResult += "\n";
  168. if (guessResutl > 0) {
  169. simpleResult += String.format("統計結果:如果您可以抽 {0}次,那麼得到 S 的機率為 {1}%\n", guess_count, guessResutl * 100.0 / simulation_count);
  170. }
  171. else {
  172. simpleResult += "統計結果:都沒有抽到\n";
  173. }
  174.  
  175. $("#SimpleResult").val(simpleResult);
  176. }
  177. </script>
  178.  
  179. </body>
  180. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement