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. }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章