GameMale
登陆 / 注册 搜索

USERCENTER

SEARCHSITE

搜索

查看: 3038|回复: 57
收起左侧

[小型活动] R语言计算本次活动存活概率

  [复制链接] |关注本帖

GM活动员

组件大师

河豚寿司『召唤好运的角笛』荧光水母

     楼主| 咸鱼鱼 发表于 2025-3-5 23:04:01 | 显示全部楼层 |阅读模式 <

    469MAPabu: 用代码算了下,假设场地都是没效果的那个,1000个玩家,模拟10000次游戏,最终存活的概率在0.56左右,比心理预期高了不少

    有坛友说存活率比想象中高很多,我也去尝试了一下

    简单来说原理就是,100点血,a概率不掉血,b概率掉15血,c概率掉25血,持续7天,最终血量大于0的概率人数
    https://rtool.cn/run/r400.html

    把下面的代码粘贴到上面的链接进行计算,发现不掉血的概率如果33%确实是0.56左右
    但实际上,至少应该是每天34%的人不掉血,这样存活概率又提高到了0.58左右

    如果再乐观一点,假设每天50%的人不掉血,这样存活概率可以提高到0.8左右
    可以说容错还是很高的

    不过活动规则又说如果超过80%的人不掉血,他们就会掉15血,那应该如何计算呢
    我让AI写了新的代码并计算了一下,结果显示存活概率还是0.8左右

    大家也可以自己尝试一下,总之这个活动看起来吓人,不过其实也没有那么吓人,大家不要太过担心就好

    新增了规则2
    1/7概率,所有人额外掉10血

    1/7概率,原来掉15血的人变成掉25血,掉25血的人变成掉40血

    存活率一下子从0.56狂跌至0.33
    1. set.seed(123)  # 设置随机种子,保证可复现

    2. simulate <- function(trials, days, a, b, c) {
    3.   initial_money <- 100
    4.   success_count <- 0
    5.   
    6.   for (i in 1:trials) {
    7.     money <- initial_money
    8.    
    9.     for (j in 1:days) {
    10.       p <- runif(1)  # 生成0到1之间的随机数
    11.       
    12.       if (p < a) {
    13.         # 不损失
    14.       } else if (p < a + b) {
    15.         money <- money - 15
    16.       } else {
    17.         money <- money - 25
    18.       }
    19.     }
    20.    
    21.     if (money > 0) {
    22.       success_count <- success_count + 1
    23.     }
    24.   }
    25.   
    26.   return(success_count / trials)
    27. }

    28. # 设定概率值
    29. a <- 0.34 # 34% 不损失
    30. b <- 0.33 # 33% 损失15血
    31. c <- 0.33 # 33% 损失25血

    32. # 运行模拟
    33. probability <- simulate(trials = 100000, days = 7, a = a, b = b, c = c)
    34. print(paste("7天后血大于0的概率:", probability))
    复制代码


    新增规则:如果超过80%的人不掉血,他们就会掉15血
    1. set.seed(123)

    2. simulate_vectorized <- function(trials, days, a, b, c) {
    3.   initial_money <- 100
    4.   
    5.   # 生成所有 trials * days 个随机数
    6.   random_probs <- matrix(runif(trials * days), nrow = trials, ncol = days)
    7.   
    8.   # 计算每天的损失(初步计算,不考虑80%规则)
    9.   loss <- ifelse(random_probs < a, 0,
    10.                  ifelse(random_probs < a + b, 15, 25))
    11.   
    12.   # 统计每天不损失的人数
    13.   no_loss_count <- rowSums(loss == 0)  # 每天不损失的玩家数
    14.   
    15.   # 找出超过80%不损失的情况
    16.   threshold <- trials * 0.8
    17.   exceed_80 <- no_loss_count > threshold  # 标记哪些天超过80%的人没损失
    18.   
    19.   # 让这些天所有原本不损失的钱的人都损失15
    20.   for (day in 1:days) {
    21.     if (exceed_80[day]) {
    22.       loss[ , day] <- ifelse(loss[ , day] == 0, 15, loss[ , day])  # 让原本 0 的改为 15
    23.     }
    24.   }
    25.   
    26.   # 计算 7 天后的总血
    27.   final_money <- initial_money - rowSums(loss)
    28.   
    29.   # 计算最终血大于 0的概率
    30.   return(mean(final_money > 0))
    31. }

    32. # 设定概率值
    33. a <- 0.5  # 50% 不损失
    34. b <- 0.3  # 30% 损失15血
    35. c <- 0.2  # 20% 损失25血

    36. # 运行模拟
    37. probability <- simulate_vectorized(trials = 1000, days = 7, a = a, b = b, c = c)
    38. print(paste("7天后血大于0的概率:", probability))
    复制代码

    新增规则2
    1/7概率,所有人额外掉10血
    1/7概率,原来掉15血的人变成掉25血,掉25血的人变成掉40血

    1. set.seed(123)

    2. simulate_vectorized <- function(trials, days, a, b, c) {
    3.   initial_money <- 100
    4.   
    5.   # 生成所有 trials * days 个随机数
    6.   random_probs <- matrix(runif(trials * days), nrow = trials, ncol = days)
    7.   special_event_probs <- runif(days)  # 生成特殊事件的概率
    8.   
    9.   # 计算每天的损失(初步计算,不考虑特殊规则)
    10.   loss <- ifelse(random_probs < a, 0,
    11.                  ifelse(random_probs < a + b, 15, 25))
    12.   
    13.   # 统计每天不损失的人数
    14.   no_loss_count <- rowSums(loss == 0)  # 每天不损失的玩家数
    15.   
    16.   # 找出超过80%不损失的情况
    17.   threshold <- trials * 0.8
    18.   exceed_80 <- no_loss_count > threshold  # 标记哪些天超过80%的人没损失
    19.   
    20.   # 让这些天所有原本不损失的钱的人都损失15
    21.   for (day in 1:days) {
    22.     if (exceed_80[day]) {
    23.       loss[ , day] <- ifelse(loss[ , day] == 0, 15, loss[ , day])  # 让原本 0 的改为 15
    24.     }
    25.   }
    26.   
    27.   # 处理特殊情况
    28.   for (day in 1:days) {
    29.     if (special_event_probs[day] < 1/7) {
    30.       loss[, day] <- loss[, day] + 10  # 每个人额外损失 10 块钱
    31.     } else if (special_event_probs[day] < 2/7) {
    32.       loss[, day] <- ifelse(loss[, day] == 15, 20,
    33.                              ifelse(loss[, day] == 25, 40, loss[, day]))
    34.     }
    35.   }
    36.   
    37.   # 计算 7 天后的总金额
    38.   final_money <- initial_money - rowSums(loss)
    39.   
    40.   # 计算最终钱大于 0 的概率
    41.   return(mean(final_money > 0))
    42. }

    43. # 设定概率值
    44. a <- 0.34  # 50% 不损失
    45. b <- 0.3  # 30% 损失15块
    46. c <- 0.3  # 20% 损失25块

    47. # 运行模拟
    48. probability <- simulate_vectorized(trials = 5000, days = 7, a = a, b = b, c = c)
    49. print(paste("7天后钱大于0的概率:", probability))
    复制代码



    评分

    参与人数 3血液 +6 追随 +2 堕落 +1 收起 理由
    zibatco2 + 1 很给力!
    娱乐法师火布偶 + 2 + 1
    SweetUncle + 3 + 1 + 1 很给力!

    查看全部评分

    回复

    使用道具 举报

    GM活动员

    荧光水母河豚寿司『召唤好运的角笛』鎏彩万幢女巫之路虚空之海的鲸永远的克叔業火死鬥实现梦想官复原职

      娱乐法师火布偶 发表于 2025-3-5 23:10:33 | 显示全部楼层 <
      我觉得你们还是祈祷一下我不要天天随机到【热血竞技场】和【荆棘迷宫】吧
        收起(7)
      回复

      使用道具 举报

      【夏日限定】夏日的泰凯斯『冰雕马拉橇』裸体克里斯亭亭如盖暗影烈焰『搓粉团珠』人鱼之泪蒂法·洛克哈特

        Kaicneg 发表于 2025-3-5 23:29:26 | 显示全部楼层 <
        你这样不是没有计算场地条件吗,是不是不太准确
        回复

        使用道具 举报

        漂洋小船冒险用指南针破损的旧书人鱼之泪雪王的心脏苏格兰圆脸胖鸡[Pro Max]丛林的鸟飞走了不曾寄出的信件幽灵竹筒『随时随地开启!』

          凯诺斯 发表于 2025-3-5 23:32:03 | 显示全部楼层 <
          回复

          使用道具 举报

          青鸾蛋永亘环鎏彩万幢『厢庭望远』

            snafa 发表于 2025-3-5 23:32:54 | 显示全部楼层 <
            看来没有想象的那么凶残。玩得开心就好,中途淘汰了也有参与奖倒不是一无所获
            回复

            使用道具 举报

            我的天使GM吸血伯爵吃饱金币的Doge苏格兰圆脸胖鸡小小舞台守卫: 坚守眼位永浴爱河肉垫手套御医神兔『搓粉团珠』

              毛茸茸兽兽 发表于 2025-3-5 23:35:10 | 显示全部楼层 <
              阿门(´×ω×`)确实要许愿活动员手气也好点的,现在存活率一半都没有……要遭(´×ω×`)
              回复

              使用道具 举报

              河豚寿司猫咪点唱机弗雷迪玩偶传奇虚空之海的鲸呆猫苏醒的格罗姆守卫: 坚守眼位金钱马车吸血魔蝠

                SweetUncle 发表于 2025-3-5 23:36:25 | 显示全部楼层 <
                鱼鱼老师分析一下场地因素概率加权后的存活概率又可以水一帖了
                  收起(2)
                回复

                使用道具 举报

                弗雷迪玩偶收到情书呆猫『搓粉团珠』炽焰咆哮虎虚空之海的鲸官复原职传奇亚瑟‧摩根

                  克莱因蓝 发表于 2025-3-5 23:47:35 | 显示全部楼层 <
                  回复

                  使用道具 举报

                  猫咪点唱机荧光水母河豚寿司桂花米糕小小舞台

                    abba 发表于 2025-3-5 23:55:30 | 显示全部楼层 <
                    回复

                    使用道具 举报

                    泰比里厄斯【夏日限定】夏日的泰凯斯王者之盾九尾妖狐·阿狸GM吸血伯爵dog夏日柯基风暴磁场之鳄

                      秘技小浣 发表于 2025-3-5 23:58:47 | 显示全部楼层 <
                      回复

                      使用道具 举报

                      桂花米糕『住在GM村』『正在入住GM村』冬之歌

                        莲一 发表于 2025-3-5 23:59:56 | 显示全部楼层 <
                        代码计算这种概率问题真的好方便欸
                        规则2其实还要更改一下,毕竟有两个回血的场地在呢。
                        回复

                        使用道具 举报

                        河豚寿司桂花米糕压箱底的泡面幽浮起司煲图腾饼干『搓粉团珠』『酒馆蛋煲』『南瓜拿铁』『钟楼盐水棒冰』

                          cdcai 发表于 2025-3-6 00:25:05 | 显示全部楼层 <
                          回复

                          使用道具 举报

                          永亘环堕落之舞『道具超市』Vergil驯化黑龙幼崽牧羊人红心玉

                            锦书致南辞 发表于 2025-3-6 00:52:37 | 显示全部楼层 <
                            回复

                            使用道具 举报

                            You Can Pet Blaidd月影狼『落樱缤纷』阿努比斯信徒業火死鬥泰比里厄斯崩朽之青铜龙王至尊巴哈姆特自定义男从Homunculus

                              归北溟 发表于 2025-3-6 01:01:51 | 显示全部楼层 <
                              回复

                              使用道具 举报

                              燕的子安贝火斑喵丛林的鸟飞走了男用贞操带漂洋小船破损的旧书冒险用指南针不曾寄出的信件

                                流星雨丶lxu 发表于 2025-3-6 01:04:11 | 显示全部楼层 <
                                回复

                                使用道具 举报

                                鎏彩万幢Zootopia都市:天际线2叶卡捷琳娜大帝传奇实现梦想官复原职丹雀衔五穗,人间始丰登丹妮莉丝·坦格利安刀锋女王 - 归宿

                                  威风妖怪麒麟 发表于 2025-3-6 01:12:54 | 显示全部楼层 <
                                  回复

                                  使用道具 举报

                                  生金蛋的鹅离去的尤利西斯呆猫走出失恋阴影的罗罗苏醒的格罗姆康纳‧沃什幸福的小阿尔我的路从时间蜿蜒而出荒野大镖客:救赎 II

                                    游魂谷 发表于 2025-3-6 01:31:14 | 显示全部楼层 <
                                    回复

                                    使用道具 举报

                                    荧光水母河豚寿司发条八音盒弗雷迪玩偶竹取物语炽焰咆哮虎蜂蜂小甜心秘法之书肉乖乖永远的克叔

                                      zibatco2 发表于 2025-3-6 01:41:37 | 显示全部楼层 <
                                      不愧是泥潭鱼大师都帮大伙计算好了存活率...

                                      看起来活动还是有相当难度...希望火老师手下留情~非酋只想存活拿好拿满勋章啊
                                      回复

                                      使用道具 举报

                                      男巫之歌缘起星空信仰之心不灭狂雷『不败之花』【新春限定】果体 隆红心玉情难自抑崩朽之青铜龙王You Can Pet Blaidd

                                        Freeze123 发表于 2025-3-6 02:00:18 | 显示全部楼层 <
                                        回复

                                        使用道具 举报

                                        愤怒的巴哈姆特步行鮟鱇金钱马车【圣诞限定】心心念念小雪人吃饱金币的Doge鎏彩万幢

                                          yota 发表于 2025-3-6 02:08:24 | 显示全部楼层 <
                                          我觉得你们还是祈祷一下我不要天天随机到【热血竞技场】和【荆棘迷宫】吧

                                          火老师的回帖给我让我心凉凉的TVT,希望我不要是那0.2,555
                                          回复

                                          使用道具 举报

                                          您需要登录后才可以回帖 登录 | 立即注册

                                          本版积分规则

                                          关闭

                                          站长公告上一条 /1 下一条

                                          文字版|手机版|小黑屋|GameMale

                                          GMT+8, 2025-12-11 10:19 , Processed in 0.167754 second(s), 148 queries , Redis On.

                                          Copyright © 2013-2025 GameMale

                                          All Rights Reserved.

                                          快速回复 返回列表