有一个函数,参数是数组值的个数
然后返回一个数组,这个数组所有的值加起来等1.
比如function getRandArray($number=1)
{
   return array(1);
}
function getRandArray($number=2)
{
   return array(0.4,0.6);
}
function getRandArray($number=3)
{
   return array(0.2,0.3,0.5);
}类似这样的算法,不知道有哪位高手帮忙解决一下

解决方案 »

  1.   

    function getRandArray($number=1) {
      if($number == 1) return array(1);
      $r = array();
      for($i=$number-1; $i>0; $i--) $r[] = rand(0, 10 - array_sum($r));
      $r[] = 10 - array_sum($r);
      foreach($r as &$v) $v /= 10;
      return $r;
    }for($i=1; $i<=10; $i++) print_r(getRandArray($i));Array
    (
        [0] => 1
    )
    Array
    (
        [0] => 1
        [1] => 0
    )
    Array
    (
        [0] => 0.4
        [1] => 0.6
        [2] => 0
    )
    Array
    (
        [0] => 0.2
        [1] => 0.2
        [2] => 0.1
        [3] => 0.5
    )
    Array
    (
        [0] => 0.6
        [1] => 0.1
        [2] => 0.2
        [3] => 0
        [4] => 0.1
    )
    Array
    (
        [0] => 0.7
        [1] => 0.2
        [2] => 0.1
        [3] => 0
        [4] => 0
        [5] => 0
    )
    Array
    (
        [0] => 0.3
        [1] => 0.7
        [2] => 0
        [3] => 0
        [4] => 0
        [5] => 0
        [6] => 0
    )
    Array
    (
        [0] => 0.6
        [1] => 0.3
        [2] => 0
        [3] => 0.1
        [4] => 0
        [5] => 0
        [6] => 0
        [7] => 0
    )
    Array
    (
        [0] => 0.4
        [1] => 0.2
        [2] => 0.4
        [3] => 0
        [4] => 0
        [5] => 0
        [6] => 0
        [7] => 0
        [8] => 0
    )
    Array
    (
        [0] => 0.8
        [1] => 0.2
        [2] => 0
        [3] => 0
        [4] => 0
        [5] => 0
        [6] => 0
        [7] => 0
        [8] => 0
        [9] => 0
    )0 太多,你自己调整一下吧