PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
本文实例讲述了PHP实现的权重算法。分享给大家供大家参考,具体如下:
假设有数据:
$data=array( array( 'id'=>1, 'name'=>'张三', 'weight'=>5 ), array( 'id'=>2, 'name'=>'王五', 'weight'=>10 ), array( 'id'=>3, 'name'=>'李四', 'weight'=>15 ), );
要随机取出其中一条,并且不是完全随机,而是根据其中weight的数值,按照数值越大,几率越高的规律取出。
以前写过一些权重算法,可是都不完美,要么数据量有限制,要么weight之和必须等于一个指定的数等等,都不完善。
今天突发奇想,写了一套完美的权重算法,该算法有如下优势:
1.支持无限多个数据
2.weight值之和任意
3.不存在两个weight值一样时无法平均分配的bug
算法如下:
$data=array( array( 'id'=>1, 'name'=>'张三', 'weight'=>5 ), array( 'id'=>2, 'name'=>'王五', 'weight'=>10 ), array( 'id'=>3, 'name'=>'李四', 'weight'=>15 ), ); $weight=0; $tempdata=array(); foreach($dataas$one){ $weight+=$one['weight']; for($i=0;$i<$one['weight'];$i++){ $tempdata[]=$one; } } $use=rand(0,$weight-1); $one=$tempdata[$use]; var_dump($one);
运行结果:
array(3){
["id"]=>
int(2)
["name"]=>
string(4)"王五"
["weight"]=>
int(10)
}
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数据结构与算法教程》、《php程序设计算法总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP常用遍历算法与技巧总结》及《PHP数学运算技巧总结》
希望本文所述对大家PHP程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。