PHP根据概率产生随机数

假设 有四个选项:a 占 10%,b占20% ,C占30% , d 占 40% ,原理就是现获取随机数,然后找区间。
当然了,选项的数量可以任意。目前默认是 总和是 100% 。如果需要别的数,修改 随机数的范围即可。
这个算法,比较简单,效率也还算高。

    1. $data = array(
    2. ‘a‘ => 10 ,
    3. ‘b‘ => 20 ,
    4. ‘c‘ => 30 ,
    5. ‘d‘ => 40
    6. );
    7. echo randomSelect( $data );
    8.  
    9. function randomSelect( &$array ){
    10. $datas = $array ;
    11. if( !is_array($datas) || count($datas) == 0 )
    12. return ;
    13. asort($datas); //按照大小排序
    14. $random = rand(1,100);
    15. $sum = 0 ;
    16.  
    17. $flag = ‘‘;
    18. foreach($datas as $key => $data ){
    19. $sum += $data ;
    20. if( $random <= $sum ){
    21. $flag = $key;
    22. break ;
    23. }
    24. }
    25. if( $flag == ‘‘ ){ // 如果传递进来的值的和小于100 ,则取概率最大的。
    26. $keys = array_keys($datas);
    27. $flag = $keys[count($keys) - 1] ;
    28. }
    29. return $flag;
    30. }

PHP根据概率产生随机数

上一篇:64 JSP 和 servlet 有什么区别?


下一篇:动手写一个简单的Web框架(Werkzeug路由问题)