使用PHP从数组中偏向随机值
有时,您可能希望以偏向随机的方式从数组中获取随机值,也就是说,您希望某些值比其他值返回更多。这是一个将从数组生成单个键的函数,其中较大的更改将检索到较高的值。
function biasedRandom($numbers){ $total = 0; foreach($numbers as $number=>$weight){ $total += $weight; $distribution[$number] = $total; }; $rand = mt_rand(0,$total-1); foreach($distribution as $number=>$weights){ if($rand<$weights){ return $number; }; }; }
此功能以下列方式使用。
//设置数组 $array = array('one'=>100, 'two'=>100, 'three'=>100, 'four'=>500); //得到有偏的随机数 echo biasedRandom($array);
该函数生成的键最多为四个,因为它的值比其余键高,因此将“重”得多。