计算游戏权重代码

$list = [
    [
        'pt' => 1,  //权重序号
        'pv' => 0,  //权重值
    ],
    [
        'pt' => 2,
        'pv' => 10,
    ],
    [
        'pt' => 3,
        'pv' => 20,
    ],
    [
        'pt' => 4,
        'pv' => 30,
    ],
    [
        'pt' => 5,
        'pv' => 40,
    ],
];

print_r(getWeight($list));

function getWeight($list){

    $minDefault = $min = 0;
    foreach ($list as $key => $val) {
        $list[$key]['min'] = $minDefault;
        $minDefault += $val['pv'];
        $list[$key]['max'] = $minDefault;
    }

    $max = max(array_unique(array_values(array_column($list, 'max'))));

    $rand = rand($min, $max);

    $pt = 0;
    foreach ($list as $item) {
        if($item['min'] < $rand && $item['max'] >= $rand){
            $pt = $item['pt'];
            break;
        }
    }

    return [$rand, $pt];
}

397cd33fd3aff887eccf08855445ee8a955.jpgf92c81fbdbb0931f0108ed0c2c3e23d56ae.jpg8617a5ce057e3c41be367e428e886934ac8.jpg

转载于:https://my.oschina.net/shmilyle/blog/3004474

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值