php数组按比例随机取元素的方法

发布时间:2020-06-26编辑:脚本学堂
本文介绍了php数组中按照一定比例随机提取元素的方法,用到了php随机数的相关知识,需要的朋友参考下。

有如下php数组,按照一定的比例(或者交权重)随机取:
 

复制代码 代码示例:
$a=array(
 'a'=>1,
 'b'=>5,
 'c'=>9,
 'd'=>3     
);

要按照数值大小(1,5,9,3)的比例随机取一个元素出来,那$a['c']这个元素应该是最多比取到的,$a['a']是最少被取到的。

例子,用到了php随机数的相关知识。
 

复制代码 代码示例:

<?
$a=array(
 'a'=>1,
 'b'=>5,
 'c'=>9,
 'd'=>3     
);
$array_keys=array_keys($a);
$array_a=$a;
$sum=array_sum($a);
$rand=rand($a[$array_keys[0]], $sum);

$i=0;
$next=current($array_a);
$skeys=1;
foreach ($a as $key => $value) {
  //是不是第一个元素
  if($skeys==1 && $rand<=$value){
   $skey=$array_keys[0];
   break;
  }
    $i=$i+$value;
    $next=$next+next($array_a);
    if( ($i <= $rand) && ($rand <= $next)){
     $skey=$array_keys[$skeys];
     break;
    }
    $skeys++;
}
var_dump($skey);
?>