m    n*(n-1)*(n-2)*...*(n-m+1)          n!
C   = ---------------------------  =  ------------
  n    m*(m-1)*(m-2)*...*3*2*1          m!*(n-m)! 这个是公式,但是对枚举作用不大,还是要遍历循环才行.
这就需要一个好的算法

解决方案 »

  1.   

    IE5.5+:var ar=[0,1,2,3,4,5,6,7,8,9];
    var resultSize = 5;
    var result = new Array(resultSize);
    for (var i=0;i<resultSize;i++) result[i] = ar.splice(Math.floor(Math.random()*ar.length),1);
    alert(result)
      

  2.   

    IE3.0+:<SCRIPT LANGUAGE="JavaScript">
    <!--
    var ar=[0,1,2,3,4,5,6,7,8,9];
    var resultSize = 5;
    var result = ar.sort(function(){return Math.random()-.5}).slice(0,resultSize);
    alert(result)
    //-->
    </SCRIPT>
      

  3.   

    不过sort也是个时间复杂度挺高的方法。数据真的多的时候应该自己实现splice方法。
      

  4.   

    <script language="javascript">
    var d = new Date();
        timer1=d.getUTCMilliseconds();
    function print2(str,n){
    var str2="";
    for(var j=1;j<=n;j++){
    if(str.indexOf(j+"")==-1){
    str2 = str + "" + j;
    if(str2.length==n)document.write(str2+"<br>");
    else{print2(str2,n);}
    }
    }
    } function myint(n){
    for(var i=1;i<=n;i++){
    print2(i+"",n);
    }
    }
    myint(6);
    var e = new Date();
    timer2=e.getUTCMilliseconds();
    document.write(timer2-timer1);
    </script>
      

  5.   

    <script language="javascript">
    function test(str,len){
      string=str;
      r=len;
      x=str.length;
      c=0;  
      a=new Array(r);
      txt.value="";
      com(1,x-r+1,0);
      alert(c);
      }  
    function com(s,e,n) {
      for(var i=s;i<=e;i++){
        a[n]=string.charAt(i-1);
        if(n==r-1) {
          txt.value+=a.join("")+"\n";
          ++c;
          }
        else com(i+1,e+1,n+1);
        }
      }
    </script>
    <input value="12345678" id=txt0><input type=button value="测试" onclick="test(txt0.value,6)"><br>
    <textarea id=txt rows=15></textarea>
      

  6.   

    算法已经差不多就这样了,要显示的快一点还可以。<script language="javascript">
    var result = [];
    var count = 0;
    function test(str,len){
    result = [];
    count = 0;
    string=str;
    r=len;
    x=str.length;
    a=new Array(r);
    txt.value="";
    com(1,x-r+1,0);
    txt.value = result.join("\n");
    alert(count);
      }  
    function com(s,e,n) {
    for(var i=s;i<=e;i++){
    a[n]=string.charAt(i-1);
    if(n==r-1) {
    result[result.length] = a.join("");
    count++;
    }else 
    com(i+1,e+1,n+1);
    }
    }
    </script>
    <input value="1234567890abcde" id=txt0><input type=button value="测试" onclick="test(txt0.value,6)"><br>
    <textarea id=txt rows=15></textarea>
      

  7.   

    楼主的“任意取出”是什么意思?
    如果是随机取出:<script language="javascript">
    var arr = new Array(0,1,2,3,4,5,6,7,8,9,10);
    function bj(a,b){ return Math.random()-0.5; }
    var arr2 = arr.slice(0).sort(bj).slice(0,5)
    document.write(arr2.join(","))
    </script>