js 模擬超級大LE透中頭獎 統計中頭獎須要購買的彩票次數以及購買總金額

<!DOCTYPE html>
<html>
<head>
    <title>超級大LE透模擬</title>
</head>
    <div id="container">
        超級大LE透
        <br>
        規則:超級大LE透基本投注是指從前區號碼中任選5個號碼,並從後區號碼中任選2個號碼的組合進行投注。其中,前區號碼由01—35共35個號碼組成,後區號碼由01—12共12個號碼組成。每注基本投注金額人民幣2元。
        <br>
        一等獎
        <br>
        投注號碼與當期開獎先後區相同,順序不限;
        <br>
        即前5個相同(不限順序),後2個相同(不限順序)...
        <br>
        但願沒理解錯
    </div>
    <br>
    <button onClick="main()">開始抽獎</button>
<body>
    <script type="text/javascript">
        // main();
        // 主函數
        function main(){
            var winNums = getLotteryNums();// 獲取開獎號碼
            document.querySelectorAll("button")[0].style.display = "none";// 隱藏按鈕
            show("本期開獎號碼:"+JSON.stringify(winNums));
            show("開始購買...");
            show("購買中...請稍後...");

            var buyCount = 1;// 購買次數統計
            var isFirstPrizeB = false;// 是否中獎
            setTimeout(function(){// 稍微延遲讓dom有寫入時間
                while(!isFirstPrizeB){// 若是沒中獎則繼續調用buyLottery()購買彩票
                    isFirstPrizeB = isFirstPrize(winNums,buyLottery());
                    buyCount++;
                }
                show("購買次數:"+buyCount+"");
                show("花費:"+(buyCount*2)+"");
            },50);
        }

        // 隨機獲取7位號碼(前區在[1-35]之間獲取,後區在[1-12]之間獲取)
        function getLotteryNums(){
            var nums = [];
            
            while(nums.length < 7){
                var oneNum = nums.length >= 5 ? getRandomIntInclusive(1,12) : getRandomIntInclusive(1,35);
                if(nums.indexOf(oneNum) > -1){
                    continue;
                }
                nums.push(oneNum);
            }
            return nums;
        }

        // 購買彩票
        function buyLottery(){
            return getLotteryNums();
        }

        // 是否頭獎中獎
        function isFirstPrize(winNums,buyNums){
            var winNumsTop = getNumsTop(winNums);
            var winNumsEnd = getNumsEnd(winNums);
            var buyNumsTop = getNumsTop(buyNums);
            var buyNumsEnd = getNumsEnd(buyNums);
            for(var i in buyNumsTop){
                var r = buyNumsTop[i];
                if(winNumsTop.indexOf(r) <= -1){
                    return false;
                }
            }

            for(var i in buyNumsEnd){
                var r = buyNumsEnd[i];
                if(winNumsEnd.indexOf(r) <= -1){
                    return false;
                }
            }
            show("中獎了!");
            show("你買的號碼是:" + JSON.stringify(buyNums));
            return true;
        }

        // 獲取前區號碼(前5位)
        function getNumsTop(Nums){
            return Nums.slice(0,5);
        }

        // 獲取後區號碼(後2位)
        function getNumsEnd(Nums){
            return Nums.slice(-2);
        }

        // 在值域爲[min,max]的集合中獲取一個隨機整數
        function getRandomIntInclusive(min, max) {
          min = Math.ceil(min);
          max = Math.floor(max);
          return Math.floor(Math.random() * (max - min + 1)) + min; //The maximum is inclusive and the minimum is inclusive 
        }

        // 寫內容到dom
        function show(html){
            console.log(html);
            var oriHtml = document.getElementById("container").innerHTML;
            document.getElementById("container").innerHTML = oriHtml + "<br>" + html +"<br>"; 
        }
    </script>
</body>
</html>

 

執行結果:javascript

相關文章
相關標籤/搜索