用PHP怎样实现权重算法,有什么优势
Admin 2022-07-07 群英技术资讯 579 次浏览
本文实例讲述了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防止表单重复提交的知识点,有需要的朋友们跟着学习参考下。
设置思路1、用户注册时需要提供一个E-MAIL邮箱,目的就是用该邮箱找回密码。2、当用户忘记密码或用户名时,点击登录页面的“找回密码”超链接,打开表单,并输入注册用的E-MAIL邮箱,提交。3、系统通过该邮箱,从数据库中查找到该用户信息,并更新该用户的密码为一个临时密码(比如:12345678)。
这篇文章主要为大家介绍了如何利用PHP实现三种不同的抽奖算法:随机抽奖、概率抽奖和内定抽奖,文中的示例代码讲解详细,感兴趣的可以了解一下
今天小编就为大家分享一篇laravel 中某一字段自增、自减的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
php底层运行机制与原理是什么?很多人可能没有深入了解过这个问题,这篇文章就带大家了解一下php底层做些什么工作以及原理是什么?感兴趣的朋友就继续往下看吧。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008