PHPは確率により乱数を発生する
3364 ワード
4つの選択肢があると仮定します.aは10%、bは20%、Cは30%、dは40%で、原理はランダム数を取得し、区間を探すことです.もちろん、オプションの数は任意です.現在のデフォルトでは、合計は100%です.他の数が必要な場合は、乱数の範囲を変更すればよい.このアルゴリズムは、比較的簡単で、効率もまあまあです.
$data = array(
'a' => 10 ,
'b' => 20 ,
'c' => 30 ,
'd' => 40
);
echo randomSelect( $data );
function randomSelect( &$array ){
$datas = $array ;
if( !is_array($datas) || count($datas) == 0 )
return ;
asort($datas); //
$random = rand(1,100);
$sum = 0 ;
$flag = '';
foreach($datas as $key => $data ){
$sum += $data ;
if( $random <= $sum ){
$flag = $key;
break ;
}
}
if( $flag == '' ){ // 100 , 。
$keys = array_keys($datas);
$flag = $keys[count($keys) - 1] ;
}
return $flag;
}