PHP根据权重进行抽签算法

解决问题:

根据数据的权重获取多条数据中的一条:

function roll($weight = array()) {
    $roll = rand ( 1, array_sum ( $weight ) );
    $_tmpW = 0;
    $rollnum = 0;
    foreach ( $weight as $k => $v ) {
        $min = $_tmpW;
        $_tmpW += $v;
        $max = $_tmpW;
        if ($roll > $min && $roll <= $max) {
            $rollnum = $k;
            break;
        }
    }
    return $rollnum;
}

$row=roll(array(1=>51,2=>80,3=>10));
echo $row;



未经允许请勿转载:熊先生个人博客 » PHP根据权重进行抽签算法

赞一个 (1)

评论 沙了个发

换个身份

取消评论

分享:

支付宝

微信