惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
C
Cisco Blogs
Help Net Security
Help Net Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Scott Helme
Scott Helme
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
M
MIT News - Artificial intelligence
L
LINUX DO - 热门话题
I
InfoQ
GbyAI
GbyAI
NISL@THU
NISL@THU
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Engineering at Meta
Engineering at Meta
H
Hackread – Cybersecurity News, Data Breaches, AI and More
TaoSecurity Blog
TaoSecurity Blog
Simon Willison's Weblog
Simon Willison's Weblog
A
About on SuperTechFans
Spread Privacy
Spread Privacy
月光博客
月光博客
W
WeLiveSecurity
AWS News Blog
AWS News Blog
云风的 BLOG
云风的 BLOG
有赞技术团队
有赞技术团队
Security Latest
Security Latest
人人都是产品经理
人人都是产品经理
PCI Perspectives
PCI Perspectives
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Microsoft Azure Blog
Microsoft Azure Blog
Hugging Face - Blog
Hugging Face - Blog
S
SegmentFault 最新的问题
T
Troy Hunt's Blog
Martin Fowler
Martin Fowler
The Hacker News
The Hacker News
T
Tor Project blog
C
CERT Recently Published Vulnerability Notes
Apple Machine Learning Research
Apple Machine Learning Research
Stack Overflow Blog
Stack Overflow Blog
K
Kaspersky official blog
Cloudbric
Cloudbric
H
Help Net Security
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
C
Cybersecurity and Infrastructure Security Agency CISA
T
Tailwind CSS Blog
D
DataBreaches.Net
Security Archives - TechRepublic
Security Archives - TechRepublic
T
Tenable Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
博客园 - Franky
L
LINUX DO - 最新话题
MyScale Blog
MyScale Blog

博客园 - Dragon4

IIS7中如何配置Url重写 优化出来的bug:慎用static 数据库学习-索引设计准则 如何拯救你,我的数据-单个mdf文件恢复数据库小记 程序员八卦:十年前天大的秘密-相约1998 Blog搬家到此,文章导入完毕,发帖庆祝。 [导入]中文版IE7for XP SP2下载地址 [导入]VS2008中文版TS版下载地址 [导入]Flex builder3 Crack 下载地址 [导入]各浏览器CSS hack [导入]VS2005 WInform程序如何调用js [导入]HttpWebResponse与WebResponse的区别 [导入]WinForm程序如何等待多个线程执行完后提示用户? [导入]Vistual studio2008RTM版本发布,附正版序列号 [导入]Request.ServerVariables参考 [导入]APS.NET获取用户端真实IP [导入]透过LINQSQO看LINQ内部机理 [导入]奇怪的数据插入异常:传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。 [导入]Flex应用启动背后的故事
[转]PHP权重算法-用于游戏根据权限来随机物品
Dragon4 · 2010-08-28 · via 博客园 - Dragon4

假设有数据:

$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


算法如下:

 1 $weight = 0;
 2 $tempdata = array();
 3 foreach ($data as $one) {
 4 
 5 $weight += $one['weight'];
 6 
 7 for ($i = 0$i < $one['weight']; $i ++) {
 8 $tempdata[] = $one;
 9 
10 }
11 
12 }
13 $use = rand(0, $weight – 1);
14 $one = $tempdata[$use];
15 

最终得到的$one,就是源数据数组中按照权重分配,随机得到的数据。