星之子 发表于 7 天前

【自编脚本】R语言告诉你:你是否倒霉?

本帖最后由 星之子 于 2024-11-15 17:00 编辑

动机
这个帖子的动机是凌晨我和@娱乐法师火布偶 老师的一段友好讨论。
该讨论起源于我发了45帖却只生了2魂,自觉过于倒霉的小小吐槽;而火布偶老师则指出了低概率勋章容易出现触发少于预期的情况:

附:火布偶老师提到的帖子
勋章概率触发分布的说明(帖子来自@AncL 老师,大家可以去围观一下这个帖子,论述相当精彩)

代码
本着求真求知的探索精神,我用R编写了下面这段代码来计算我是否真的很倒霉:
# 设置参数
posts <- 45      # 发帖数
n <- 9         # 设置生魂数量<=n

p1 <- 0.02       # 2%魂勋章的概率
p2 <- 0.01       # 1%魂勋章的概率

n1 <- 8          # 2%魂勋章的数量
n2 <- 4          # 1%魂勋章的数量

dist1 <- function(k) dbinom(k, size = n1, prob = p1)
dist2 <- function(k) dbinom(k, size = n2, prob = p2)
total_dist <- function(m) {
sum(sapply(0:n1, function(k1) dist1(k1) * dist2(m - k1) * (m - k1 >= 0)))
}

# 生魂小于等于n的累积概率
calc_cumulative_prob <- function(n) {
# PGF of 单次发帖生魂数
pgf <- sapply(0:(n1 + n2), total_dist)
# 卷积
conv_pgf <- Reduce(function(x, y) convolve(x, rev(y), type = "o"), rep(list(pgf), posts))
# 累加从0到n的概率
cumulative_prob <- sum(conv_pgf)
return(cumulative_prob)
}

cumulative_prob_n <- calc_cumulative_prob(n)
cat("发了", posts, "帖 总生魂数≤", n, "的累积概率为:", cumulative_prob_n)

R语言虽然比较冷门,但解决概率论问题的时候还是蛮舒服的。而且本身相对轻量,用什么包就装什么包。
我个人是用部署在本地的R和R Studio,但在线工具也很好找,我这里的截图用的是点击直达。

使用方法:
按照代码注释修改发帖数、这些帖子的生魂数量、你所持有的2%和1%发帖+1灵魂勋章的数量,即可执行。然后可以看看这个情况出现的实际概率如何,如果概率很低则说明,你很倒霉。

代码执行的结果如下:
发了 45 帖 总生魂数≤ 9 的累积概率为: 0.5874126
发了 45 帖 总生魂数≤ 2 的累积概率为: 0.005921053


我又尝试复现AncL老师帖子里论述的结果,大致吻合:
①按照100次实验、总期望10%计算
令 p1 = 0.1, p2 = 0.05,分别测试 n1 = 1, n2 = 0 和 n1 = 0, n2 = 2 的情况,两次得出的结果如下:
发了 100 帖 总生魂数≤ 10 的累积概率为: 0.5831555
发了 100 帖 总生魂数≤ 10 的累积概率为: 0.5830672
②按照100次实验、总期望80%计算
令 p1 = 0.8, p2 = 0.4,分别测试 n1 = 1, n2 = 0 和 n1 = 0, n2 = 2 的情况,两次得出的结果如下:
发了 100 帖 总生魂数≤ 80 的累积概率为: 0.5398386
发了 100 帖 总生魂数≤ 80 的累积概率为: 0.5306622


综上所述:我持有8个2%和4个1%发帖+1灵魂勋章,在这种情况下发了45帖却只生了2魂的概率为0.5921053%,可以说是相当倒霉了,所以因此产生了吐槽。


星象占卜

凯诺斯 发表于 7 天前

很有意思的脚本惹,很想知道自己是不是倒霉的{:6_169:}

Eiwei 发表于 7 天前

能计算出自己的触发概率,可以说是相当有意思的joy

咸鱼鱼 发表于 7 天前

分析的很好,但是我翻阅妹妹的过往记录,曾经有着3贴4魂的好成绩

能否算算是否是这个东西的概率,是不是对冲抵消了

亚洛斯 发表于 7 天前

发了 45 帖 总生魂数≤ 9 的累积概率为: 0.9995558
发了 45 帖 总生魂数≤ 2 的累积概率为: 0.4924746
发了 45 帖 总生魂数≤ 1 的累积概率为: 0.2465921

毕竟我就0.06的总期望,我已经做好了心理预期

zhuovboyan 发表于 7 天前

0-0 数据小白悄咪咪路过 坚信自己可以转运jpg

a1343672175 发表于 7 天前

有时候带着一堆勋章然后回了条帖,只弹出了一个金币+2,我当场就陷入了沉思

黑达克 发表于 7 天前

每次发帖都不加,最近发帖前都已经不再做截图的准备了{:6_175:}

tuxonstar 发表于 7 天前

不过以大佬的灵魂勋章数量,45贴两魂怎么看都不是运气上佳呢。

不过大数定理还是会告诉我们,只要往后猛猛发,后面都会掉落大量魂呢

相见忧 发表于 7 天前

本帖最后由 相见忧 于 2024-11-15 18:24 编辑

什么,你怎么知道我7贴生了3魂:$
发了 7 帖 总生魂数≤ 3 的累积概率为: 0.9554636

呵呵呢 发表于 7 天前

我也想要8个2%和4个1%发帖+1灵魂勋章:Q

娱乐法师火布偶 发表于 7 天前

统计情况低于期望的情况还是比较普遍的,不过发生低概率的极差运气的事情确实是罕见

cinder 发表于 7 天前

本帖最后由 cinder 于 2024-11-15 17:51 编辑

10/22跳了1魂,那之後發了35帖獲得0魂,
9%发了 35 帖 总生魂数≤ 0 的累积概率为: 0.04172856
恩...這真的不是BUG嗎?比星之子大佬倒黴12倍呢...
https://img.gamemale.com/album/202408/03/102121ubl2b4leibsmzs7s.gif
想了一下,紫水晶是補貨時買的,
8%发了 35 帖 总生魂数≤ 0 的累积概率为: 0.05932006
好像高了不少呢.......
要累積到多少%才能上報Bug呢...

wubingyonglei 发表于 7 天前

我看到的是什么?数学题?概率题?
只能说不要被期望骗了
超级羡慕星佬的0.2
运气是随机多变

毛茸茸兽兽 发表于 7 天前

吼(´×ω×`)看了看自己43帖还是0魂的……阿门

折木 发表于 7 天前

俺不发帖就没用这种烦恼了ƪ(˘⌣˘)ʃ

1287549 发表于 7 天前

期望终究只是期望,特别这种纯概率没有保底确实会很容易出现这种情况

mengdi 发表于 7 天前

灵魂全靠风雪之家的我,触发一次感觉可以直接烧高香了

2674820557 发表于 7 天前

本可只有0.01的期望,灵魂离我还很遥远呢

归北溟 发表于 7 天前

所以灵魂和其他几个属性比有什么特殊之处?(萌新探头)
页: [1] 2 3 4
查看完整版本: 【自编脚本】R语言告诉你:你是否倒霉?