Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

要求生成一个数组,装六位随机数,并且这些随机数不能重复。
(数组内装多个随机数,每个随机数为六位数,数组内的随机数不重复)

可以参考下面两个代码,可以把这两个结合起来。

//随机六位数
function MathRand()
{
    var Num="";
    for(var i=0;i<6;i++)
    {
        Num+=Math.floor(Math.random()*10);
    }
}
//不重复随机数组
/*  num 要产生多少个随机数
    from 产生随机数的最小值
    to 产生随机数的最大值   */
function createRandom(num ,from ,to )
{
    var arr=[];
    for(var i=from;i<=to;i++)
        arr.push(i);
    arr.sort(function(){
        return 0.5-Math.random();
    });
    arr.length=num;
    return arr;
}
 
function createRandom2(num , from , to)
{
    var arr=[];
    var json={};
    while(arr.length<num)
    {
        //产生单个随机数
        var ranNum=Math.ceil(Math.random()*(to-from))+from;
        //通过判断json对象的索引值是否存在 来标记 是否重复
        if(!json[ranNum])
        {
            json[ranNum]=1;
            arr.push(ranNum);
        }
         
    }
    return arr;
     
     
}
alert(createRandom2(10,0,50));//生成10个从0-50之间不重复的随机数

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
497 views
Welcome To Ask or Share your Answers For Others

1 Answer

这个可以通过一个递归来完成。为了演示方便,我改成了生成一组不重复的 10 以内的正整数随机数。
主要依靠的方法就是 indexOf() 方法,用来找某个值在数组中的索引,如果数组中没有,则返回 -1 。
代码如下:

var arr=[];
function getRandom(){
    var random=Math.floor(Math.random()*1000000);
    console.log(random);
    //判断生成的数在数组中是否存在,判断是否是6位数
    //如果不存在而且是6位数,放入数组
    if(random.toString().length==6&&arr.indexOf(random)==-1){     
        arr.push(random)
    }else{
    //如果存在或者不是6位数,接着调用这个函数,生成满足要求的随机数
        console.log("不符合要求的"+random)
        getRandom();
    }
}
for(var i=0;i<6;i++){
    getRandom();
}
console.log(arr);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...