首页主机资讯PHP中怎么根据权重生成随机数

PHP中怎么根据权重生成随机数

时间2024-06-09 01:32:03发布访客分类主机资讯浏览475
导读:可以使用PHP的mt_rand( 函数结合权重来生成随机数。具体步骤如下: 首先定义一个包含各个权重的数组,如$weights = array(1, 2, 3, 4 。 计算权重数组的总和,如$totalWeight = array...

可以使用PHP的mt_rand()函数结合权重来生成随机数。具体步骤如下:

  1. 首先定义一个包含各个权重的数组,如$weights = array(1, 2, 3, 4)。

  2. 计算权重数组的总和,如$totalWeight = array_sum($weights)。

  3. 生成一个随机数$rndNum,范围为1到$totalWeight之间,如$rndNum = mt_rand(1, $totalWeight)。

  4. 遍历权重数组,累加每个权重值,并判断$rndNum是否小于等于累加值,如果是,则返回当前索引值作为随机数,如下所示:

function getRandomNumberByWeight($weights) {
    
    $totalWeight = array_sum($weights);
    
    $rndNum = mt_rand(1, $totalWeight);
    
    
    $cumulativeWeight = 0;
    
    foreach($weights as $key =>
 $weight) {
    
        $cumulativeWeight += $weight;
    
        if($rndNum <
= $cumulativeWeight) {
    
            return $key;

        }

    }

}
    
  1. 调用函数getRandomNumberByWeight($weights),即可根据权重生成随机数。

例如,如果$weights = array(1, 2, 3, 4),则根据权重生成的随机数可能为0、1、2或3,其概率分别为1/10、2/10、3/10、4/10。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: PHP中怎么根据权重生成随机数
本文地址: https://pptw.com/jishu/678219.html
国外免费云服务器的规格怎么选择 网站seo怎么选择免费海外虚拟主机

游客 回复需填写必要信息