PHP中游戏随机概率方法(兼容小数点权重)
2017-01-18 17:15
369 查看
编写游戏代码时,经常会遇到一些需求,需要根据权重数组来生成抽奖结果,以下给出具体方法:
/** * 生成权重概率 * @param array $randArr 包含概率字段的数组,比如array( array('id' => 1, 'rate' => 40.99), array('id' => 2, 'rate' => 59.01)); * @param int || string $rateKey 概率值在数组中的键名, 比如$randArr中的'rate' * @return $randArr数组中的某个索引值 */ public static function createRandomKey($randArr, $rateKey){ $total = 0; $chooseArr = array(); $pow = 0; 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 > $before && $rand <= $v){ $chooseIndex = $k; break; } $before = $v; } return $chooseIndex; }
相关文章推荐
- php实现按照权重随机排序数据的方法
- [转]PHP权重算法-用于游戏根据权限来随机物品
- 游戏中按概率抽奖的php代码及使用方法
- PHP权重算法-用于游戏根据权限来随机物品
- php实现按照权重随机排序数据的方法
- PHP权重算法-用于游戏根据权限来随机物品
- php生成随机密码的几种方法
- 在线考试系统----随机抽题的方法(ASP,PHP,JSP,SQL)
- PHP生成随机字符串的方法
- Vista与游戏不兼容的终极解决方法
- php如何生成随机密码的几种方法
- mysql 随机解决权重方法
- php生成随机密码的几种方法
- 解决Vista系统与游戏不兼容的终极方法
- php产生随机数的两种方法实例代码 输出随机IP
- php生成随机密码的几种方法
- PHP生成随机密码的三种方法
- php 中生成随机字符串的方法
- php生成随机密码的几种方法
- PHP编程----取随机数字母数字自己决定(类方法)