输入数字N,在1~N中产生m个不重复是随机数并排列,请问用js如何做?谢谢

解决方案 »

  1.   


    function abc(n,m){
    var list = new Array();
    for(var i=0; i<m; i++){
    list.push(Math.floor(Math.random()*n)+1);
    }
    if(m>1){
    for(var i=1; i<list.length; i++){
    var a=list[i];
    var b=list[i-1];
    if(b>a){
    list[i]=b;
    list[i-1]=a;
    i=0;
    }
    }
    }
    alert(list);
    }
    abc(10,5);
      

  2.   

    var val, ret = [], done = {}, n = 100;
    for (; ret.length < n;) {
    val = Math.random();
    if (!(val in done)) ret.push(val), done[val] = true;
    }
    alert(ret.sort().join(', '));
      

  3.   


    Array.prototype.remove=function(n){if(isNaN(parseInt(n))) return false;if(n>=this.length || n<0) return false;for(var i=n;i<this.length-1;i++) this[i]=this[i+1];this.pop();return true;}var N = 10;
    var m = 5;
    var a=[], b = [];
    for(var i=0; i<N; i++) a[i] = i+1;for(var i=0; i<m; i++){
        var r = Math.floor(Math.random()*(a.length-1)+1);
        b[b.length] = a[r];
        var v = a.remove(r);
    }for(var i=0; i<b.length-1; i++){
        for(var j=i+1; j<b.length; j++){
           if(b[j]<b[i]){
              var t = b[i];
              b[i] = b[j];
              b[j] = t;    
           }    
        }
    }for(var i=0; i<b.length; i++) alert(b[i]);
      

  4.   

    前面看错意思了
    function rnd(m, n){
    var val, ret = [], done = {};
    for (; ret.length < m;) {
    val = Math.random() * (n / 2);
    if ((val >= 1 && val <= n) && !(val in done)) ret.push(val), done[val] = 1;
    }
    return ret.sort(function(a, b){
    return a - b;
    });
    }alert(rnd(10, 300).join(', '));
      

  5.   

    val = Math.random() * (n / 2);
    改为 val = Math.random() * n;