PHP游戏概率方法

<?php

 function createRandomKey($randArr, $rateKey){
        $total = 0;
        $chooseArr = array();
        $pow = 0;     
        //比如array( array('id' => 1, 'rate' => 40.99), array('id' => 2, 'rate' => 59.01));
       /* foreach($randArr as $k => $v){      
            $tmp = explode('.', strval($v[$rateKey]));
            if($tmp[1] && strlen($tmp[1]) > $pow){
                $pow = strlen($tmp[1]);
            }
        }*/
        $r = pow(10, $pow);
        foreach($randArr as $key => $value){
            $total = $total + $value[$rateKey] * $r;
            $chooseArr[$key] = $total;
        };
        $rand = rand(1, $total);
        $bofore = 0;
        foreach ($chooseArr as $k => $v){
            $v = $v * $r;
            if($rand > $bofore && $rand <= $v){
               $chooseIndex = $k;
                break;
            }
            $bofore = $v;
        }
        return $chooseIndex;
    }
    
    $randArr = [
            0 => ['point' => 15,'rate' => 0],
            1 => ['point' => 5,'rate' => 0],
            2 => ['point' => 10,'rate' => 0],
            3 => ['point' => 11,'rate' => 0],
            4 => ['point' => 13,'rate' => 10],
            5 => ['point' => 20,'rate' => 80],
            6 => ['point' => 50,'rate' => 0],
            7 => ['point' => 80,'rate' => 0],
            8 => ['point' => 10,'rate' => 0],
            9 => ['point' => 60,'rate' => 10],
        
        ];
    
    $a = createRandomKey($randArr,$rate = 'rate');
    var_dump($a);
    var_dump($randArr[$a]['point']);

  

转载于:https://www.cnblogs.com/qhorse/p/9050312.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值