1-33中随机抽取6个,让其6个数字不重复,用js输出

解决方案 »

  1.   


    <script type="text/javascript">
    <!--
    function getRandom(max, min){
    var max = parseFloat(max);
    var min = parseFloat(min);
    return Math.floor(Math.random()*(max - min)+min);
    } function t31in7(){
    var min = 1, max = 31, count = 7, weishu = 2;
    var result = [], curr = 0;
    for(var i = 0; i < count; i++){
    curr = getRandom(min, max+1).toString();
    while(result.join(',').indexOf(curr) != -1){
    curr = getRandom(min, max+1).toString();
    }
    result.push(('0' + curr).slice(-2));
    }
    document.getElementById('re').innerHTML = result.join('&nbsp;');
    }//-->
    </script>
    <input type="button" value="31in7" onclick="t31in7();" />
    <div id="re" style="color:red"></div>
      

  2.   


    // 参数说明
    var min = 1, max = 32, count = 6, weishu = 2; //这样就是32选6min: 最小数 max 最大数 count 所选球数 weishu就是要显示球号的固定位数
      

  3.   


    晕 楼主的是 33选6
    var min = 1, max = 33, count = 6, weishu = 2;  // 把第一行参数换成这样
      

  4.   


    var arr={};
    var getNumber=function() {
        var n=parseInt(Math.random()*33)+1;//1-33;
        if(!arr[n]) {
            arr[n]=n;
            return n;
        }
        else//如果已经存在重新生成
            return arguments.callee();
    }
    for(var i=0;i<6;i++) {
        document.write(getNumber()+"<br/>");//输出6个号码
    }
      

  5.   


      //产生一个1-33的数组
        function createArr(){
            var arr = [];
    var n;
    var has=false;
            for (var i = 0; i < 6; i++) {
    has=true;
    while (has) {
    has=false;
    n = Math.floor(Math.random() * 33) + 1;//1-33
    for (var j = 0; j < arr.length; j++) {
    if (arr[j] == n) {
    has = true;
    break;
    }
    }
    }
    arr.push(n);
            }
    return arr;
        }
      

  6.   

    result.push(('0' + curr).slice(-2)); 这句话是什么意思??
      

  7.   

    <script language="javascript"> 
    function  AscSort(x, y)    
      {   
       return  x  ==  y  ?   0  : (x  >  y  ?   1  :  - 1 );   
    }  
    function getNum(){
    document.getElementById("divId").innerText="红球:";
    document.getElementById("divId2").innerText="蓝球:";
    var n=getRed();
    n.sort(AscSort);
    for(var i=0;i<6;i++){
      document.getElementById("divId").innerText+=n[i]+" ";
    }
    y=true;
    while(y==true){
    var n=Math.floor(Math.random()*16);
    if(n>0){
      y=false;
      if(n<10)
        n='0'+n;
      document.getElementById("divId2").innerText+=n+" ";
    }
    }
    }
    function getRed(){
    var n=new Array();
    var i=0;
    do{
    var yn=false;
    var m=Math.floor(Math.random()*34);
    if(m>0){
      for(j=0;j<i;j++){
    if(n[j]==m)
      yn=true;
      }
    }else{
      yn=true;
    }
    if(yn==false){
    if(m<10)
      m='0'+m;
    n[i]=m;
    i++;
    }
    }while(i<6);
    return n;
    }
    </script>
    <body>
    <input value="嘿嘿" type="button" onClick="javascript:getNum();" />
    <div id="divId" style="color:#F00; font-size:14px">红球:</div>
    <div id="divId2" style="color:#00F; font-size:14px">蓝球:</div>
    </body>
    </html>
      

  8.   

    意思是:将curr前面加上一个0形成一个新的字符串,然后取该字符串的最后两位,形成一个新的元素,放到result数组的末尾,
      

  9.   


    3楼代码写的很漂亮 但从抽奖的角度来讲算是有BUG。
    你判断重复的方式有点问题。。 
    while(result.join(',').indexOf(curr) != -1){
                    curr = getRandom(min, max+1).toString();
    }   //是判断新生成的数字 之前有没有重复。
    也就是说如果前面出现了12,13这两个随机数,后面连02,03都排除了,因为数字2,3在前面也找得到。。