我在php中有数组,像这样
$randomarray = array('1106'=>'5','1110'=>'2','11867'=>'3','1206'=>'2','1210'=>'1','1223'=>'6','1235'=>'3','12565'=>'4','1258'=>'5','12690'=>'2','12693'=>'3','1283'=>'1','12944'=>'5');我想从数组中随机挑选计数为20的元素。每个元素只需要一次
我尝试了一些随机数组的例子。我不能得到我所期望的确切总数。
这是我所做的例子。但是循环变成了不定式,
function randomTo($numIn) {
global $randomarray;
$numOut = 0;
$numbers = array();
do {
$key = array_rand($randomarray );
$add = $mainarray[$key];
if($numOut + $add > $numIn)
continue;
$numOut += $add;
$numbers[] = $add;
unset($mainarray[$key]);
} while( $numOut != $numIn );
return $numbers;
}
$testdata = randomTo(20);发布于 2015-01-02 20:49:58
您试图解决的问题称为Subset sum,它是Knapsack problem的一个子集。
只要在谷歌上搜索它,当你在做它的时候,谷歌搜索Dynamic programming,因为这是解决问题的一种方式。
https://stackoverflow.com/questions/27741992
复制相似问题