Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html>
- <body>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <script src="https://cdn.jsdelivr.net/npm/lodash@4.17.11/lodash.min.js"></script>
- <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
- <p>抽取機率請參考:<a href="https://f7.163.com/news/update/20181219/27047_791254.html" target="_blank">這裡</a><br></p>
- <table style="width:100%">
- <tr>
- <td>
- 可以抽幾次:<input maxlength="5" id="lottery" size="5" type="text" value="100" />
- </td><td>
- 模擬次數:<input maxlength="4" id="times" size="4" type="text" value="50" /> <button name="start" onclick="myFunction()">開始模擬</button>
- </td>
- </tr>
- <tr>
- <td>
- <div>
- 詳細結果:</p><textarea id="DetailResult" cols="50" rows="40"></textarea>
- </div>
- </td>
- <td>
- <div>
- 重點結果:</p><textarea id="SimpleResult" cols="50" rows="40"></textarea>
- </div>
- </td>
- </tr>
- </table>
- <script>
- if (!String.format) {
- String.format = function (src) {
- if (arguments.length == 0) return null;
- var args = Array.prototype.slice.call(arguments, 1);
- return src.replace(/\{(\d+)\}/g, function (m, i) {
- return args[i];
- });
- };
- }
- function validate() {
- var x;
- x = $.trim($("#lottery").val());
- if (! _.isInteger(x)) {
- x = _.toInteger(x);
- }
- if (x == 0) {
- x = 100;
- }
- if (x < 0) {
- x = Math.abs(x);
- }
- $("#lottery").val(_.toInteger(x));
- x = $.trim($("#times").val());
- if (! _.isInteger(x)) {
- x = _.toInteger(x);
- }
- if (x == 0) {
- x = 50;
- }
- if (x < 0) {
- x = Math.abs(x);
- }
- $("#times").val(_.toInteger(x));
- }
- function myFunction() {
- /* 一般 S
- const s_fragment_min = 0;
- const s_fragment_max = 675;
- const s_fragment_1_min = 0;
- const s_fragment_1_max = s_fragment_max / 3;
- const s_fragment_2_min = s_fragment_1_max;
- const s_fragment_2_max = s_fragment_max * 2 / 3;
- const s_fragment_3_min = s_fragment_2_max;
- const s_fragment_3_max = s_fragment_max;
- const s_whole_min = s_fragment_max + 0;
- const s_whole_max = s_fragment_max + 25;
- */
- // /*
- // */ /* 特殊隙間 S
- const s_fragment_min = 0;
- const s_fragment_max = 400;
- const s_fragment_1_min = 0;
- const s_fragment_1_max = s_fragment_max / 3;
- const s_fragment_2_min = s_fragment_1_max;
- const s_fragment_2_max = s_fragment_max * 2.0 / 3;
- const s_fragment_3_min = s_fragment_2_max;
- const s_fragment_3_max = s_fragment_max;
- const s_whole_min = s_fragment_max + 0;
- const s_whole_max = s_fragment_max + 15;
- // */
- validate();
- $("#DetailResult").val("");
- $("#SimpleResult").val("");
- let guessResutl = 0;
- let detailResult = "";
- let simpleResult = "";
- let guess_count = _.toInteger($("#lottery").val());
- let simulation_count = _.toInteger($("#times").val());
- for(let i=1; i<=simulation_count; i++) {
- let got_s = false;
- let s1 = 0;
- let s2 = 0;
- let s3 = 0;
- for(let j=1; j<=guess_count; j++) {
- let guess = _.random(0, 10000, true);
- if (_.inRange(guess, s_fragment_min, s_fragment_max)) {
- let k = 0;
- if (_.inRange(guess, s_fragment_1_min, s_fragment_1_max)) {
- k = 1;
- s1 ++;
- }
- else if (_.inRange(guess, s_fragment_2_min, s_fragment_2_max)) {
- k = 2;
- s2 ++;
- }
- else if (_.inRange(guess, s_fragment_3_min, s_fragment_3_max)) {
- k = 3;
- s3 ++;
- }
- detailResult += String.format("模擬第 {0}回,抽第 {1}次:抽到 S 碎片 {2}\n", i, j, k);
- if (s1 * s2 * s3) {
- detailResult += String.format("模擬第 {0}回:湊齊碎片拼成整隻 S\n", i);
- simpleResult += String.format("模擬第 {0}回,抽第 {1}次:湊齊碎片拼成整隻 S\n", i, j);
- guessResutl++;
- got_s = true;
- }
- }
- else if (_.inRange(guess, s_whole_min, s_whole_max)) {
- detailResult += String.format("模擬第 {0}回,抽第 {1}次:抽到整隻 S\n", i, j);
- simpleResult += String.format("模擬第 {0}回,抽第 {1}次:抽到整隻 S\n", i, j);
- guessResutl++;
- got_s = true;
- }
- if (!got_s && j == 180) {
- detailResult += String.format("模擬第 {0}回,抽第 {1}次:保底得到整隻 S\n", i, j);
- simpleResult += String.format("模擬第 {0}回,抽第 {1}次:保底得到整隻 S\n", i, j);
- guessResutl++;
- got_s = true;
- }
- $("#DetailResult").val(detailResult);
- $("#SimpleResult").val(simpleResult);
- if (got_s) {
- break;
- }
- }
- detailResult += "\n";
- $("#DetailResult").val(detailResult);
- }
- simpleResult += "\n";
- if (guessResutl > 0) {
- simpleResult += String.format("統計結果:如果您可以抽 {0}次,那麼得到 S 的機率為 {1}%\n", guess_count, guessResutl * 100.0 / simulation_count);
- }
- else {
- simpleResult += "統計結果:都沒有抽到\n";
- }
- $("#SimpleResult").val(simpleResult);
- }
- </script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement