1. 程式人生 > >概率---抽獎

概率---抽獎


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<input type="button" id="input1" value="10000">
<h1>一等獎:5‰,二等獎:3%,三等獎:80%,紀念獎(謝謝惠顧)</h1>
<ul id="ul1">
    <li>一等獎 : <span
>
</span></li> <li>二等獎 : <span></span></li> <li>三等獎 : <span></span></li> <li>紀念獎 : <span></span></li> </ul> <script> /* * 演算法: * 1.規劃中間區間 [5, 30, 800] * 一等獎 0~4 * 二等獎 5~29 * 三等獎 30~799 * 紀念獎 800~1000 * 2.隨機產生n個數,與中獎區間的值比較,並且對映到中獎區間中 * 3.打印出結果 * * */
let oInput1 = document.getElementById('input1'); let oUl = document.getElementById('ul1'); let aSpan = oUl.getElementsByTagName('span'); let size = 1000; // 中獎區間 let arr1 = [size*0.005, size*0.03, size*0.8]; let arr2 = []; oInput1.onclick = function () { let num = 0; let
arr2 = []; // 初始化中獎區間以及個數 /* * 一等獎 { iNow : 0, val : 5 } * 二等獎 { iNow : 0, val : 35 } * 三等獎 { iNow : 0, val : 835 } * */ for ( let i = 0; i < arr1.length; i++ ) { num += arr1[i]; arr2.push({ iNow : 0, val : num }); } // 要隨機產生多少個隨機數 // 開始抽獎 let randomNumTotal = parseInt(oInput1.value); for ( let i = 0; i < randomNumTotal; i++ ) { // 0~999 var random = Math.floor(Math.random() * size); // 對映獎項 distributeZoom(random); } // 列印結果 var sum = 0; for ( let i = 0; i <= arr2.length; i++ ) { // 紀念獎 if ( i === arr2.length) { aSpan[i].innerHTML = randomNumTotal - sum; } // 1~3等獎 else { aSpan[i].innerHTML = arr2[i].iNow; // 將一、二、三等獎累計 sum += arr2[i].iNow; } } function distributeZoom(num){ /* * 一等獎 0~4 * 二等獎 5~34 * 三等獎 35~799 * */ for ( var i = 0; i < arr2.length; i++ ) { if ( arr2[i].val > num ) { arr2[i].iNow++; break; } } } }
</script> </body> </html>