js实现100到10000的数字,生成2-30组随机的数字相加等于输入值且每组数字不重复,个十百位不重复

zzytxx 2018-03-28 05:42:36
如:input1输入3500、input2输入30,生成30组随机数字,每组之间不重复,每组数字个十百位数字不能重复,如:121、220、555都不行
...全文
1039 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
MY128 2018-03-31
  • 打赏
  • 举报
回复

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<input type="text" id="input1"><br>
<input type="text" id="input2">
<button onclick="testclick()">测试生成随机数</button>
<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<script>
function getrandom(str){//判断数字字符串中是否有重复
var tempstr;
for (let i = 0; i < str.length-1; i++) {
tempstr = str[i];
for (let j = i+1 ; j < str.length; j++) {
if (tempstr == str[j]){
return true;
}
}
}
return false;
}
function getstr(){//通过循环取得一个input1数值内的随机数,随机数内数字不重复
var arrstr = '111';
while (getrandom(arrstr)) {
arrstr = parseInt($('#input1').val()*Math.random()) + '' ;
}
return arrstr;
}
var arr = [];
var testclick = function () {//输出input2数量的随机数
for (let index = 0; index < $('#input2').val(); index++) {
arr.push(getstr());
}
alert(arr);
}
</script>
</body>
</html>
星坠凡尘 2018-03-30
  • 打赏
  • 举报
回复
function createArr(sum, time) { if (sum < 100) return; if (time < 2) return; if (sum < time) return; var arr = []; function random() { var rand = parseInt(Math.random() * sum / time + 1); var g = rand % 10; var s = parseInt((rand % 100) / 10); var b = parseInt(rand / 100) % 10; if(g !== s && g !== b && s !== b) { return rand } else { random() } } for(var i = 1; i < time; i++) { var rand = random() arr.forEach(function(e) { if (rand === e) { rand = random(); } }) if(arr.length != i) { arr.push(rand); } else i-- } var num = 0; arr.forEach(function(e){ num += e }) if(num < sum && (sum - num) > 100) { arr.push(sum - num) return arr } else { createArr(sum, time) } }
zzytxx 2018-03-28
  • 打赏
  • 举报
回复
生成的随机数字相加要等于给定的值,这个只是随机生成了相应的数字
zzytxx 2018-03-28
  • 打赏
  • 举报
回复
引用 1 楼 zzgzzg00 的回复:

function createArr(){
        return Array.apply(Array,{length:10})
                .map(function(item,index){
                    return index;
                })
    }
    function randomNotRepeatNum(len) {
        var arr=createArr();
        var _arr=[];
        while(len>0){
            var i=(Math.random()*arr.length)<<0;
            _arr.push(arr[i]);
            arr.splice(i,1);
            len--;
        }
        return _arr.join('')<<0;
    }
    function random(maxnum,time){
        var o={};
        while(time>0){
            var len=(maxnum+'').length;
            var rlen=(1+Math.random()*len)<<0;
            var rv=randomNotRepeatNum(rlen);
            if(rv<=maxnum){
                if(!o[rv]){
                    o[rv]=1;
                    time--;
                }
            }
        }
        return Object.keys(o).join(',')
    }
小白表示看不太懂
似梦飞花 2018-03-28
  • 打赏
  • 举报
回复

function createArr(){
        return Array.apply(Array,{length:10})
                .map(function(item,index){
                    return index;
                })
    }
    function randomNotRepeatNum(len) {
        var arr=createArr();
        var _arr=[];
        while(len>0){
            var i=(Math.random()*arr.length)<<0;
            _arr.push(arr[i]);
            arr.splice(i,1);
            len--;
        }
        return _arr.join('')<<0;
    }
    function random(maxnum,time){
        var o={};
        while(time>0){
            var len=(maxnum+'').length;
            var rlen=(1+Math.random()*len)<<0;
            var rv=randomNotRepeatNum(rlen);
            if(rv<=maxnum){
                if(!o[rv]){
                    o[rv]=1;
                    time--;
                }
            }
        }
        return Object.keys(o).join(',')
    }

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧