求最优算法

实现随机生成四个数字,要求:

0,1,4,7 不能同时出现,例如 1234。
不能同时出现两个以上相同数字,例如 5255

下面我的实现方法,总觉得有些麻烦了

    let arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    let num = []
    let count = 0
    while(count < 4) {
        let rand = Math.floor( Math.random() * arr.length )
        let data = arr[rand];
      /* 
       * 实现不能同时出现相同数字
       * if(num.indexOf(data) !== -1) {
       *     continue
       * }
      **/
        // ------------
        // 中间这部分实现 最多两个数字相同
        let sn = 0
        num.forEach((e) => {
            if (data == e) {
                sn ++
            }
        })
        if (sn >= 2) {
            continue
        }
        // --------------
        num.push(data)
        count ++
        if (data === 0 || data === 1 || data === 4 || data === 7) {
            arr = [2, 3, 5, 6, 8, 9]
        }
    }
    num = num.toString().split(',').join('')

你可能感兴趣的:(求最优算法)