<script type="text/javascript">
    var unique = {};
    window.onload = function(){
        document.getElementById('btn').onclick = function(){
            var result = random_num([6,1]);
            document.getElementById('result').innerHTML = document.getElementById('result').innerHTML + '<br />' + result
            unique = {};
        }
    };
    function random_num(){
        var params = arguments[0];
        var count = params[0] + params[1];
        var result = arguments[1] || [];
        var k = ("0"+Math.floor(Math.random() * (result.length >= params[0] ? 16 : 32) + 1)).slice(-2);
        if(result.length<count){
            if(!unique[k]){
                result.push(k);
                unique[k] = 1;
            }
            random_num(params,result);
        }
        return result;
    }
</script>
<button id="btn">result</button>
<div id="result"></div>

解决方案 »

  1.   

            if(result.length == 0){
                random_num(params,[currentRandom]);
                unique[currentRandom] = true;//缺少这里是错误的根源,但为什么重要的数不是第一个呢?
            }else{
                if(!unique[currentRandom]){
                    unique[currentRandom] = true;
                    result.push(currentRandom);
                }
                if(result.length < count){
                    random_num(params,result);
                }else{
                    this.result = result.slice(0,count-1).sort().concat(result.slice(params[0]));
                    //原因在于这里:你把数组重排了,如果你写 this.result=result;就会发现只重要第一个数
                }
            }
      

  2.   


    unique[currentRandom] = true;//缺少这里是错误的根源,但为什么重要的数不是第一个呢?
    不明白.  this.result = result.slice(0,count-1).sort().concat(result.slice(params[0]));
                    //原因在于这里:你把数组重排了,如果你写 this.result=result;就会发现只重要第一个数我在你修改的代码之后,还是改成:
    this.result = result.slice(0,count-1).sort().concat(result.slice(params[0]));
    ,没问题.感谢!