本帖最后由 mt_hero 于 2012-11-08 13:33:36 编辑

解决方案 »

  1.   

    这是组合,C(n,m) = n!/((n-m)!*m!)
    n=7, m=6 得 7!/((7-6)!*6!) = 7!/6! = 7
    n=10, m=6 得 10!/((10-6)!*6!) = 10!/(4!*6!) = (10*9*8*7)/(4*3*2*1) = 210php 实现的求组合的算法有很多,这里给出一种
    $arr    = array(1,2,3,4,5,6,7,8,9,10);
    print_r(comb($arr, 6));function comb( $arr, $num=0) {
      $len = count($arr);
      if($num == 0) $num = $len;
      $res = array();
      for($i=1,$n=pow(2, $len);$i<$n;++$i) {
        $tmp = str_pad(base_convert($i, 10, 2), $len, '0', STR_PAD_LEFT);
        $t = array();
        for($j=0;$j<$len;++$j) {
          if($tmp{$j} == '1') {
            $t[] = $arr[$j];
          }
        }
        if(count($t) == $num) $res[] = $t;
      }
      return $res;
    }
      

  2.   


    <?php
    $a = "1,2,3,4,5,6,7,8,9,10";
    $res = array_rand(explode(',',$a),6);
    至于多少种方式嘛,排列组合可以很容易求出。C(n,6)