用PHP怎样实现权重算法,有什么优势
Admin 2022-07-07 群英技术资讯 694 次浏览
本文实例讲述了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 ($data as $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)
}
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
今天小编就为大家分享一篇关于PHP xpath()函数讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
这篇文章介绍了PHP基础用法讲解及phpinfo();演示,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
在laravel中,可以利用Request对象的isMethod方法配合if语句来进行判断是否是post传输请求,只需将参数设置为“post”即可,语法为“if($request->isMethod('post')){要执行的代码}”。
本文并没有kafka的安装教程,本文是针对已经安装kafka及其配置好kafka的php拓展并且使用laravel框架进行开发项目,配置一个可供laravel框架使用的生产及消费者类,小编觉得挺不错的,对大家学习或是工作可能会有所帮助,对此分享发大家做个参考,希望这篇文章能帮助大家解决问题。
这篇文章主要介绍了ThinkPHP5.0框架实现切换数据库的方法,结合实例形式分析了thinkPHP5.0数据库的配置与动态连接相关操作技巧,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008