我是个老球迷,也是个程序员,写代码累了就喜欢翻翻NBA集锦,尤其是艾弗森和科比的,前两天一个朋友跟我杠上了,非说艾弗森比科比强,还搬出01年总决赛的数据来,我寻思着这事光靠嘴说没意思,干脆用Go语言写个模拟程序,把俩人整个职业生涯的数据丢进去跑一跑,看看机器怎么说。
先别急着争,数据得对齐
要比较两个传奇后卫,首先得把数据维度对齐,我爬了Basketball-Reference上俩人从新秀赛季到退役的所有常规赛和季后赛数据,这里有个坑,艾弗森是96年状元,科比是96年13号秀,俩人是同一届新秀,但生涯轨迹完全不同,艾弗森在76人打了十个赛季出头,科比在湖人打了二十年。不把出场次数、回合占有率、真实命中率这些相对指标拉平,比较就是不公平的。
我建了个结构体:
type Player struct {
Name string
GamesPlayed int
PointsPerGame float64
AssistsPerGame float64
ReboundsPerGame float64
StealsPerGame float64
TSProcent float64
UsageRate float64
PlayoffAppearances int
Championships int
MVPs int
AllStarGames int
PER float64
}
数据填进去之后,艾弗森职业生涯场均26.7分3.7篮板6.2助攻,科比场均25.0分5.2篮板4.7助攻,光看基础数据,艾弗森得分助攻稍高,但篮板输了,但这只是表面。
模拟一万次,取中位数
我写了个蒙特卡洛模拟,把每个赛季的数据随机采样,然后对关键指标加权打分,权重我自己定的,得分占30%,效率占20%,带队成绩占25%,荣誉占25%,跑了一万次之后,结果出来了:
模拟场次:10000
艾弗森综合评分中位数:7
科比综合评分中位数:4
科比胜出比例:3%
说实话,第一眼看到这个结果我有点意外,艾弗森01年总决赛单挑OK组合,场均35.6分,那轮系列赛简直天神下凡,但模拟器不考虑情怀,它只看整体,科比的持久战能力太恐怖了——20个赛季,15次入选最佳阵容,12次最佳防守阵容。艾弗森巅峰期爆炸力无人能及,但巅峰长度确实比科比短了五六年。

两个关键指标:效率与防守
模拟器跑的时候,我发现两个维度把差距拉开了。
第一个是 真实命中率(TS%),科比生涯TS%是55.0%,艾弗森是51.8%,别看只差3个点,放在后卫里就是全明星和普通首发的区别,艾弗森因为身高只有1米83,不得不高出手低效率得分,很多球都是顶着人强投,科比虽然也铁,但身体条件好太多,背身单打和后仰跳投的出手质量高得多。
第二个是 防守端的贡献,科比的防守胜利贡献值(DWS)是46.8,艾弗森是20.2。差了一倍还多。 09到10赛季,科比是湖人外线的防守大闸,关键时刻主防对面箭头,艾弗森的防守说实话只能是联盟平均水准以下,抢断数据好看(场均2.2次),但经常赌博式抢断导致失位,模拟器里防守权重占20%,这一块科比把分差拉得挺明显。
带队能力不能只看总冠军
很多人说科比五个总冠军,艾弗森零个,所以科比完胜,这个说法太粗糙了,我用Go写了个带队系数函数,算的是 “全明星队友缺席时球队胜率变化”,科比在加索尔来之前,带队进了一次总决赛(04年),但04年他有奥尼尔,艾弗森01年带着伤兵满营的76人杀进总决赛,一路上淘汰了卡特、雷阿伦、穆托姆博(这哥们后来成队友了),还从湖人手里啃下一场胜利。
如果把总冠军数量折算成加权得分,科比因为鲨鱼时代的三连冠,权重需要打八折,同时代的保罗·皮尔斯、邓肯都说过,最怕的不是科比爆砍50分,而是艾弗森那种“一个人扛着一支球队往前冲”的状态。模拟器在处理带队能力时,给了季后赛胜利贡献值(WS)很高的权重,艾弗森01年那个赛季的WS相当惊人。
职业生涯曲线才是关键
我把俩人的场均得分画成走势图(代码里用的ASCII折线),发现一个有意思的模式:
- 艾弗森:巅峰出现在24-28岁(场均31.4分到33.0分),然后30岁之后断崖式下滑,32岁去掘金时场均已经掉到26.4分,35岁在活塞已经只有14.3分了。
- 科比:巅峰从22岁一直持续到32岁(场均25-35分区间),33岁跟腱断裂前仍然能场均27.3分,受伤之后虽然下滑,但退役战还能拿60分。
简单说,艾弗森是烟花,科比是持久的火炬。 如果只看巅峰三年,艾弗森的数据和观赏性绝对不输任何历史级别的后卫,但如果拉到整个生涯看,科比的稳定性和耐久度让他整体评分更高。
模拟之外的思考
写这段代码的时候,我一直在想一个问题:如果艾弗森有科比的身高和身体耐度,或者科比有艾弗森的速度和过人,会发生什么?Go语言模拟不了这种假设,因为数据里只有现实发生过的事情,但正是这些不完美——艾弗森的身高局限,科比的偏执——让他们的比较变得有意思。
我整理了俩人在关键数据维度上的对比表:
| 指标 | 艾弗森 | 科比 |
|---|---|---|
| 场均得分 | 7 | 0 |
| 真实命中率 | 8% | 0% |
| 季后赛得分 | 7 | 6 |
| 总冠军 | 0 | 5 |
| MVP | 1 | 1 |
| 全明星MVP | 2 | 4 |
| 月最佳球员 | 5次 | 17次 |
| 最佳阵容一阵 | 3次 | 11次 |
| 防守一阵 | 0次 | 9次 |
看完这张表,你不难理解为什么模拟器更偏科比,但如果你让我选一个在昨天晚上的野球场上能带一支破烂队伍跟别人干一架的队友,我可能会犹豫。数据看的是全部事实,但球场上的那一股子狠劲,没数据能量化。
你们觉得呢?要不要自己跑跑这个模拟,或者调调权重?我把代码的注释写得很清楚,改改关键参数就能看到不同结果,反正我是把数据存到CSV里了,有空再用不同的算法试试——比如昆汀·塔伦蒂诺的电影规则:“谁看起来更酷,谁就赢。”那艾弗森可能真能拿满分。
本文来自作者[kyadmin]投稿,不代表678体育 - 全网热门体育赛事高清直播平台立场,如若转载,请注明出处:http://www.tiantaizhongcheng.com/fc/1275.html
评论列表(4条)
我是678体育 - 全网热门体育赛事高清直播平台的签约作者“kyadmin”!
希望本篇文章《艾弗森和科比谁厉害?我用Go语言跑了一万次模拟,结果有点意外》能对你有所帮助!
本站[678体育 - 全网热门体育赛事高清直播平台]内容主要涵盖:678体育,678体育官网,678赛事直播
本文概览:我是个老球迷,也是个程序员,写代码累了就喜欢翻翻NBA集锦,尤其是艾弗森和科比的,前两天一个朋友跟我杠上了,非说艾弗森比科比强,还搬出0...