zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    love 玫瑰花
    正则表达式
    .NET Mvc
    html收藏
    winform问题集锦
    MSDE2000
    Oracle 语法
    PowerDesigner
    Oracle 操作
    文件转换(待完善)
  • 原文地址:https://www.cnblogs.com/phpfensi/p/4242293.html
Copyright © 2011-2022 走看看