我倒,明明是随机的,搞不懂你在说什么,KKK

解决方案 »

  1.   

    实际上不是完全随机的
    看看alert(arrt)的结果就知道始终前面出现小的机会大,后面出现大的机会大。
      

  2.   

    我开始认为是 Array.sort的问题了。。
    当我改成下面的,执行结果就完全符合我的意愿function Array.prototype.mysort(func)
    {
    for(var j=this.length-1;j>0;j--)
    {
    for(var i=0;i<j;i++)
    {
    if(func(this[i],this[i+1]))
    {
    var t=this[i];
    this[i]=this[i+1];
    this[i+1]=t;
    }
    }
    }
    return this;
    }
    function Array.prototype.random()
    {
    var len=this.length;
    var arrt=new Array(len);
    for(var i=0;i<len;i++)
    arrt[i]={i:i,r:Math.random()};
    arrt.mysort(function(a,b){return a.r>b.r});
    var arrr=new Array(len);
    for(var i=0;i<len;i++)
    arrr[i]=this[arrt[i].i];
    return arrr;
    }
    //test:var arr=new Array(36);
    for(var i=0;i<arr.length;i++)
    arr[i]=i+1;//alert(arr.random());var arrt=new Array(arr.length);
    for(var i=0;i<arrt.length;i++)
    arrt[i]=0;
    var count=200;
    while(count--)
    {
    var arrr=arr.random();
    for(var i=0;i<arrt.length;i++)
    arrt[i]+=arrr[i];
    }
    alert(arrt);
      

  3.   

    我开始认为是 Array.sort的问题了。。
    当我改成下面的,执行结果就完全符合我的意愿function Array.prototype.mysort(func)
    {
    if(func)
    for(var j=this.length-1;j>0;j--)
    {
    for(var i=0;i<j;i++)
    {
    if(func(this[i],this[i+1]))
    {
    var t=this[i];
    this[i]=this[i+1];
    this[i+1]=t;
    }
    }
    }
    else
    for(var j=this.length-1;j>0;j--)
    {
    for(var i=0;i<j;i++)
    {
    if(this[i]>this[i+1])
    {
    var t=this[i];
    this[i]=this[i+1];
    this[i+1]=t;
    }
    }
    }
    return this;
    }
    function Array.prototype.random()
    {
    var len=this.length;
    var arrt=new Array(len);
    for(var i=0;i<len;i++)
    arrt[i]={i:i,r:Math.random()};
    arrt.mysort(function(a,b){return a.r>b.r});
    var arrr=new Array(len);
    for(var i=0;i<len;i++)
    arrr[i]=this[arrt[i].i];
    return arrr;
    }
    //test:var arr=new Array(36);
    for(var i=0;i<arr.length;i++)
    arr[i]=i+1;//alert(arr.random());var arrt=new Array(arr.length);
    for(var i=0;i<arrt.length;i++)
    arrt[i]=0;
    var count=256;
    while(count--)
    {
    var arrr=arr.random();
    for(var i=0;i<arrt.length;i++)
    arrt[i]+=arrr[i];
    }
    alert(arrt);