|
|
|
| есть массив:
<?
$arr[0]['weight'] = 120;
$arr[1]['weight'] = 110;
$arr[2]['weight'] = 10;
$arr[3]['weight'] = 80;
?>
|
В соответствии с весами нужно выбрать любой .
Нужна функция которая без обычных раундов а с помощью mt_rand()/mt_getrandmax() таких функций выдавала на выводе Ключ или например параметр массива типо $arr[0][id] | |
|
|
|
|
|
|
|
для: sidPR
(28.03.2008 в 14:41)
| |
<?
$arr[0]['WEIGHT'] = 100;
$arr[0]['ID'] = 22;
$arr[1]['WEIGHT'] = 120;
$arr[1]['ID'] = 23;
$arr[2]['WEIGHT'] = 300;
$arr[2]['ID'] = 24;
$arr[3]['WEIGHT'] = 90;
$arr[3]['ID'] = 25;
$arr[4]['WEIGHT'] = 50;
$arr[4]['ID'] = 26;
$arr[5]['WEIGHT'] = 10;
$arr[5]['ID'] = 27;
$arr[6]['WEIGHT'] = 20;
$arr[6]['ID'] = 28;
foreach ($arr as $key){
$intSum += intval($key["WEIGHT"]);
}
$rndWeight = $intSum * (mt_rand()/mt_getrandmax());
$intStep = 0;
foreach ($arr as $key){
if($rndWeight>=$intStep && $rndWeight<=$intStep+$key["WEIGHT"]){
$ID = $key["ID"];
break;
}
$intStep += $key["WEIGHT"];
}
$ID = intval($ID )<=0 ? 1 : intval($ID);
echo $ID;
?>
|
Насколько я прав ? | |
|
|
|