生成22以内的按升序排列5个一组的随机数,但不能出现相同的现象,但不同的组合当中可以出现相同。
例如 :
    生成五组
    0102030405,0506070809,1017192021,0106091219,0711161920,
每次调用传递一个参数,根据参数生成参数个数的以上类型的随机数。

解决方案 »

  1.   

    <script>
    //kk每组数据的个数
    //mm要获得数据的组数
    //max最大值
    function test(kk,mm,max)
    {
     var a=[];
     var b=[];
     for(var j=0;j<mm;j++)
     {  for(var i=0;i<kk;i++)
       {
       var s=Math.round(Math.random()*(max-1));
       s=s.toString().length==1?"0"+s.toString():s.toString();
       b.push(s);
       }
       a.push(b.join(""));
       b.splice(0,b.length);
       }
     return a.join(",");
    }
    alert(test(5,5,22));</script>
    每次调用传递一个参数,根据参数生成参数个数的以上类型的随机数。
    没看懂参数是什么,所以用了3个参数
      

  2.   

    改一下,忘了这个条件(升序,不能出现相同)
    <script>
    //kk每组数据的个数
    //mm要获得数据的组数
    //max最大值var b=[];
    function test(kk,mm,max)
    {
     var a=[]; for(var j=0;j<mm;j++)
     {  for(var i=0;i<kk;i++)
       {
          var num=getnum(max);
          b.push(num);
       }
       var bb=b.sort(function(a,b){if (a > b) return 1;if (a < b) return -1;});
       for(var h=0;h<b.length;h++)
       {
            b.splice(h,1,(b[h].toString().length==1?"0"+b[h].toString():b[h].toString()));
       }
      // a.push(bb.join("|"));
       a.push(bb.join(""));
       b.splice(0,b.length);
       }
     return a.join(",");
    }function validate(x)  //验证数字是否相同
    {
       //var s=Math.round(Math.random()*(x-1));
       for(var p=0;p<b.length;p++)
          {
             if(b[p]==x) 
              {
              return true;      
              }
          }
         return false;
      // return s;
       //return s.toString().length==1?"0"+s.toString():s.toString();
    }function getnum(x)  //得到合法数字
    {
    var s=Math.round(Math.random()*(x-1));
    while(validate(s))
    {
      s=Math.round(Math.random()*(x-1));
    }
    return s;
    }
    alert(test(5,5,22));</script>
      

  3.   

    <select onchange="generateRand(this.value)">
    <option value="0">请选择</option>
    <option value="5">5</option>
    <option value="6">6</option>
    </select>
    <script>
    function generateRand(count){
    if(count>0){
    var tempStr = "";
    var passed = 0;
    while(passed < count){
    var value = Math.ceil(Math.random()*22);
    if(value<10){
    value = "0"+value+",";
    }
    if(tempStr.indexOf(value)==-1){
    tempStr+=value;
    passed++;
    }
    }
    alert(tempStr.replace(",",""));
    }
    }
    </script>
      

  4.   

    有点小BUG,修正
    <select onchange="generateRand(this.value)">
    <option value="0">请选择</option>
    <option value="5">5</option>
    <option value="6">6</option>
    </select>
    <script>
    function generateRand(count){
    if(count>0){
    var tempStr = "";
    var passed = 0;
    while(passed < count){
    var value = Math.ceil(Math.random()*22);
    if(value<10){
    value = "0"+value.toString();
    }else{
    value = value.toString();
    }
    value+=",";
    if(tempStr.indexOf(value)==-1){
    tempStr+=value;
    passed++;
    }
    }
    alert(tempStr.replace(/,/g,""));
    }
    }
    </script>
      

  5.   

    可能我讲得不太清楚呵.http://cnc.500wan.com/info/eexw/看看这个网页的选号区就明白了,呵呵,麻烦兄弟们了.
      

  6.   

    <select onchange="generateRand(this.value)">
    <option value="0">请选择</option>
    <option value="5">5</option>
    <option value="6">6</option>
    </select>
    <script>
    function generateRand(count){
    if(count>0){
    var number = 5;
    var outputArray = new Array();
    for(i=0;i<count;i++){
    var tempStr = "";
    var passed = 0;
    while(passed < number){
    var value = Math.ceil(Math.random()*22);
    if(value<10){
    value = "0"+value.toString();
    }else{
    value = value.toString();
    }
    value+=",";
    if(tempStr.indexOf(value)==-1){
    tempStr+=value;
    passed++;
    }
    }
    outputArray[i]=(tempStr.replace(/,/g,""));
    }
    outputArray = outputArray.sort();
    for(i=0;i<count;i++){
    alert(outputArray[i]);
    }
    }
    }</script>
      

  7.   

    <script language=javascript>
    var a=new Array()
    var result=new Array();
    for(var i=1;i<23;i++)
    {
    a.push(((i<10)?("0"+i):i))
    }
    for(var j=0;j<5;j++)
    {
    temp=Math.floor(Math.random()*22)

    result.push(a.slice(temp,parseInt(temp)+1))
    }
    result.sort();
    alert(result)
    </script>