有一个函数,参数是数组值的个数
然后返回一个数组,这个数组所有的值加起来等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)
{
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);
}类似这样的算法,不知道有哪位高手帮忙解决一下
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 太多,你自己调整一下吧