一个方法用js生成随机双色球、大乐透

代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #crateNum {
            display: flex;
            justify-content: center;
        }

        #ssqStyle,
        #dltStyle {
            border: 1px solid #ccc;
            padding: 10px;
            background: rgba(0, 0, 0, .5);
        }

        #ssqStyle>p,
        #dltStyle>p {
            font-size: 30px;
            text-align: center;
            font-weight: bold;
        }
        #ssqLIst,#dltList{
            height: 300px;
            padding: 50px;
            box-sizing: border-box;
            text-align: center;
            color: #fff;
        }
    </style>
</head>

<body>
    <div id="crateNum">
        <div id="ssqStyle">
            <p>双色球</p>
            <button onclick="creatNum('ssq',1)">随机生成1组</button>
            <button onclick="creatNum('ssq',5)">随机生成5组</button>
            <button onclick="creatNum('ssq',10)">随机生成10组</button>
            <hr>
            <ul id="ssqLIst">
            </ul>
        </div>
        <div id="dltStyle">
            <p>大乐透</p>
            <button onclick="creatNum('dlt',1)">随机生成1组</button>
            <button onclick="creatNum('dlt',5)">随机生成5组</button>
            <button onclick="creatNum('dlt',10)">随机生成10组</button>
            <hr>
            <ul id="dltList">
            </ul>
        </div>
    </div>
</body>
<script>
    //定义红篮球数组
    let ssqArr = [], dltArr = [];

    //参数说明
    // classify:要产生双色球数据还是大乐透数据,因为用的一个方法,所以要区分一下
    //          ssq:双色球;
    //          dlt:大乐透
    // num:产生多少组
    function creatNum(classify, num) {
        // 定义前后区个数
        let qq = 0, //前区个数--红球数量
            hq = 0, //后区个数--篮球数量
            qqScope = 0, //前区每个球的数值范围---双色球是1-33,大乐透是1-35
            hqScope = 0; //后区每个球的数值范围---双色球是1-16,大乐透是1-12
        // 判断时ssq还是dlt
        if (classify == 'ssq') {
            this.ssqArr = []; //将双色球数据列表清空(避免多次点击数据叠加)
            qq = 6; //双色球的前区(红球)个数为6个
            hq = 1; //双色球的后区(蓝球)个数为1个
            qqScope = 33; //双色球前区(红球)数值范围是1-33
            hqScope = 16; //双色球后区(蓝球)数值范围是1-16
        } else if (classify == 'dlt') {
            this.dltArr = []//将大乐透数据列表清空(避免多次点击数据叠加)
            qq = 5; //大乐透的前区(红球)个数为5个
            hq = 2; //大乐透的后区(蓝球)个数为2个
            qqScope = 35; //大乐透前区(红球)数值范围是1-35
            hqScope = 12; //大乐透后区(蓝球)数值范围是1-12
        }

        // 外层循环表示需要产生多少组随机数字
        for (let i = 0; i < num; i++) {
            //定义前后区(红蓝球)数组
            let redBall = [];
            let blueBall = [];
            let blueBallNum = '';
            //获取一组前区(红球)数据
            for (let j = 0; j < qq; j++) {
                let redBallNum = this.random(1, qqScope);
                //位数补齐--0-9不足两位的在前面补"0"
                redBallNum = redBallNum.toString().padStart(2, "0");
                //判重添加
                //如果不存在(false),就添加
                if (redBall.indexOf(redBallNum) == -1) {
                    redBall.push(redBallNum);
                } else {
                    //反之j--重新循环
                    j--;
                }
            }
            //前区数字从大到小排序
            redBall.sort((a, b) => {
                return a - b
            })
            //获取一组后区(蓝球)数据
            for (let k = 0; k < hq; k++) {
                let blueBallNum = this.random(1, hqScope);
                //位数补齐--0-9不足两位的在前面补"0"
                blueBallNum = blueBallNum.toString().padStart(2, "0");
                //判重添加
                //如果不存在(false),就添加
                if (blueBall.indexOf(blueBallNum) == -1) {
                    blueBall.push(blueBallNum);
                } else {
                    //反之k--重新循环
                    k--;
                }
            }
            //后区数字从大到小排序
            blueBall.sort((a, b) => {
                return a - b
            })
            if (classify == 'ssq') {
                //合并添加到ssqArr(双色球数据列表)中
                this.ssqArr[i] = (redBall.toString() + "-----" + blueBall.toString());
            } else if (classify == 'dlt') {
                //合并添加到dltArr(大乐透数据列表)中
                this.dltArr[i] = (redBall.toString() + "-----" + blueBall.toString());
            }
        }

        //操作标签部分

        // 获取ul标签,方便后面往里填数据
        let ssqLIst = document.querySelector('#ssqLIst')
        let dltList = document.querySelector('#dltList')

        // 判断选的随机产生双色球数据还是大乐透数据
        if (classify == 'ssq') {
            // 清空原先的内容
            ssqLIst.innerHTML = ''
            //将数据循环添加到dom中
            for (let s = 0; s < this.ssqArr.length; s++) {
                var li = document.createElement("li");
                li.innerText = this.ssqArr[s];
                ssqLIst.appendChild(li);
            }
        } else if (classify == 'dlt') {
            // 清空原先的内容
            dltList.innerHTML = ''
            for (let d = 0; d < this.dltArr.length; d++) {
                var li = document.createElement("li");
                li.innerText = this.dltArr[d];
                dltList.appendChild(li);
            }
        }

    }
    //获取随机数
    function random(min, max) {
        //Math.random()获取0-1中的随机数
        //随机数需要取整parseInt(),向下取整 Math.floor()
        return parseInt(Math.random() * (max - min) + min);
    }
</script>

</html>

效果如下:

没咋写过原生,可能里面的方法有待优化。

相关推荐
真的很上进2 小时前
如何借助 Babel+TS+ESLint 构建现代 JS 工程环境?
java·前端·javascript·css·react.js·vue·html
噢,我明白了6 小时前
同源策略:为什么XMLHttpRequest不能跨域请求资源?
javascript·跨域
sanguine__6 小时前
APIs-day2
javascript·css·css3
关你西红柿子6 小时前
小程序app封装公用顶部筛选区uv-drop-down
前端·javascript·vue.js·小程序·uv
济南小草根7 小时前
把一个Vue项目的页面打包后再另一个项目中使用
前端·javascript·vue.js
小木_.7 小时前
【python 逆向分析某有道翻译】分析有道翻译公开的密文内容,webpack类型,全程扣代码,最后实现接口调用翻译,仅供学习参考
javascript·python·学习·webpack·分享·逆向分析
Aphasia3117 小时前
一次搞懂 JS 对象转换,从此告别类型错误!
javascript·面试
m0_748256567 小时前
Vue - axios的使用
前端·javascript·vue.js
m0_748256348 小时前
QWebChannel实现与JS的交互
java·javascript·交互
胡西风_foxww8 小时前
【es6复习笔记】函数参数的默认值(6)
javascript·笔记·es6·参数·函数·默认值