本文作者:DurkBlue

按概率取出随机数

DurkBlue2021-08-271944
按概率取出随机数摘要: 需求:客户跟进项目,当有新客户进入系统,按照指定概率将客户分配给指定员工来跟进,给每个待指定的员工一个概率(概率之和为1),然后按照概率来分配即可。代码:...

需求:

客户跟进项目,当有新客户进入系统,按照指定概率将客户分配给指定员工来跟进,给每个待指定的员工一个概率(概率之和为1),然后按照概率来分配即可。

代码:

function randomFloat($min = 0, $max = 1) {
    return $min + mt_rand() / mt_getrandmax() * ($max - $min);
    
    }
    function Choose($seq, $prob, $k=1)

    {
        $list = [];
    
        for ($i = 0$i < $k$i++) {
            $q = randomFloat();
    
            for ($j = 0$j <= count($seq); $j++) {
                if(array_sum(array_slice($prob0$j)) < $q && $q <= array_sum(array_slice($prob0$j + 1))) {
                    $list[$i] = $seq[$j];
    
                break;
    
                }
    
            }
    
        }
    
        return $list;
    
}
    
$a = ['1''0.5''0.3'];

$b = [0.050.100.85];

// 重复100000次

$k = 100000;

$res = Choose($a$b$k);

// 统计每个元素出现的次数

var_export(array_count_values($res));



此篇文章由DurkBlue发布,撰文不易,转载请注明来处
文章投稿或转载声明

来源:DurkBlue版权归原作者所有,转载请保留出处。本站文章发布于 2021-08-27
温馨提示:文章内容系作者个人观点,不代表DurkBlue博客对其观点赞同或支持。

赞(0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

阅读
分享