请使用Javascript生成10个20~200之间的随机数,要确保生成的随机数不重复.

2024-11-22 17:02:05
推荐回答(5个)
回答1:

var arr=[];
function rec(r,i){
    for(var j=0;j        if(r==arr[j]){
            r=Math.floor(Math.random()*(200-20+1)+20);
            rec(r,i);
            break;
        }
    }
    if(j==i){
        arr.push(r);
    }
}
function random(){
for(var i=0;i<10;i++){
    var r=Math.floor(Math.random()*(200-20+1)+20);
    i==0&&arr.push(r);
    if(i>0){
        rec(r,i);
    }    
}
console.log(arr);
}
random();

运用了递归排除重复的可能,10个数重复的可能性很小,你可以生成更多数测试,是不会出现重复数字的

生成的10个随机数

生成的30个随机数

回答2:

        var count = 200;
        var arr = new Array;
        //把20~200赋给一个数组
        for (var i = 20; i <= count; i++) {
            arr[i] = i;
        }



        //数组打撒,无序排列
        arr.sort(function () { return 0.5 - Math.random(); });
        //取出前10个数组的值
        for (var i = 0; i < 10; i++) {
            alert(arr[i]);
        }

回答3:

var arr = [];
while(arr.length < 10){
    var bFlag = true;
    var number = Math.floor(Math.random()*181 + 20);
    if(arr.length == 0){
        arr.push(number);
    }
    for(var i=0;i        if(number == arr[i]){
            bFlag = false;
        }
    }
    if(bFlag){
       arr.push(number); 
    }
}
console.log(arr);

回答4:

function randomNumber(n){
    var out = [];
    for(var i =0; i < n ; i++){
         var num =  20|( (Math.random()*200)|0)
         if(out.indexOf(num)==-1)
             out.push(num)
         else
             i--;
    }
    return out;
}

console.log(randomNumber(10))

回答5:

var arr = new Array();
while(arr.length < 10){
    var num = Math.round(180*Math.random()) + 20;
    var exists =false;
    for(var i=0,l=arr.length;i        if(arr[i]==num){
            exists = true;
        }
    }
    if(!exists){
        arr.push(num);
    }
}
arr.sort(function(a,b){
    return a-b;
});
console.log(arr.join(","));