用PHP怎样实现权重算法,有什么优势
Admin 2022-07-07 群英技术资讯 539 次浏览
本文实例讲述了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如何实现用户登录注册功能?登录注册功能是很多网站都会使用到的,因此这篇文章就给大家介绍一个实现简单注册页面的代码,下图是实现效果,文本有较详细的过程及代码,有需要的朋友可以参考一下。
PHP连接MySQL数据库的操作是新手学习PHP一定要掌握的技能,这篇文章就给大家分享三个PHP连接MySQL数据库的方法,分别是面向过程方法,面向对象方法和PDO方法,对正在学习PHP的同学有一定的参考价值。
integer类型就是集合Z={...,-2,-1,0,1,2,...}中的一个数字。integer可以已10进制,8进制,16进制表示。用八进制表示的时候,数字需要已0(零)开头;用十六进制表示的时候,数字需要已0x(零x)或者0X(零大写X)开头; integer溢出:integer溢出的时候,会自动的转化为float类型。同样的,如果integer类型的
在本篇文章里小编给大家整理的是关于php服务器用什么系统的相关知识点内容,有兴趣的朋友们跟着学习参考下。
这篇文章主要给大家介绍关于PHP的类与对象相关内容,类与对象功能、用法,对于与新手学习PHP来说,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面我们就一起来学习一下。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008