首页 > 代码库 > PHP根据概率产生随机数

PHP根据概率产生随机数

假设 有四个选项: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;}

 

PHP根据概率产生随机数