概率---抽獎
阿新 • • 發佈:2018-12-26
<!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>