GameMale
登陆 / 注册 搜索

USERCENTER

SEARCHSITE

搜索

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

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

  [复制链接] |关注本帖

组件大师

猫咪点唱机巴尔弗雷亚位于左侧的随从已派遣远征最终幻想XIV『逆境中的幸运女神』我已倾听,我已感受,我已思考男巫之歌『搓粉团珠』【新春限定】果体 隆自定义男从Homunculus

     楼主| 咸鱼鱼 发表于 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活动员

    John Reese裸体克里斯位于左侧的随从已派遣远征虚空之海的鲸黄粱一梦【新春限定】果体 隆新神的赐福都市:天际线2永远的克叔業火死鬥

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

      举报

      自定义男从Homunculus『冰雕马拉橇』裸体克里斯亭亭如盖暗影烈焰『搓粉团珠』人鱼之泪蒂法·洛克哈特

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

        举报

        擎天柱(Peterbilt389)位于左侧的随从已派遣远征漂洋小船冒险用指南针破损的旧书人鱼之泪雪王的心脏苏格兰圆脸胖鸡[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 | 显示全部楼层 <
                    回复

                    举报

                    捡到了肥皂泰比里厄斯【夏日限定】夏日的泰凯斯王者之盾九尾妖狐·阿狸dogDocGM吸血伯爵

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

                      举报

                      蜘蛛侠位于左侧的随从已派遣远征16x43 隐形➀【新春限定】果体 隆街头霸王

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

                        举报

                        凯登‧阿兰科位于左侧的随从已派遣远征炙热的格拉迪欧拉斯【夏日限定】夏日的泰凯斯新神的赐福死灵之书灵魂之椅

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

                          举报

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

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

                            举报

                            月亮提灯吸血魔蝠阿努比斯信徒雷夜嘯聲自定义男从Homunculus虚空之海的鲸璀璨闪蝶『搓粉团珠』

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

                              举报

                              神奇宝贝图鉴黑暗交易石肤术无法消解的怨恨召唤古代战士石鬼面破损的旧书射手的火枪

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

                                举报

                                都市:天际线2实现梦想官复原职丹雀衔五穗,人间始丰登丹妮莉丝·坦格利安刀锋女王 - 归宿岛田源氏岛田半藏龙腾世纪:审判荒野大镖客:救赎 II

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

                                  举报

                                  尤利西斯位于左侧的随从已派遣远征苏醒的格罗姆荒野大镖客:救赎 II夏之歌走出失恋阴影的罗罗吃饱的小阿尔康纳‧沃什

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

                                    举报

                                    奧倫位于左侧的随从已派遣远征可爱毛团传奇女巫之路传说猫咪点唱机夏日柯基阿努比斯信徒黑神话:悟空

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

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

                                      举报

                                      不灭狂雷位于左侧的随从已派遣远征

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

                                        举报

                                        未散的宴席位于左侧的随从已派遣远征自定义男从Homunculus

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

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

                                          举报

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

                                          本版积分规则

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

                                          GMT+8, 2025-5-3 09:43 , Processed in 0.153282 second(s), 147 queries , Redis On.

                                          Copyright © 2013-2025 GameMale

                                          All Rights Reserved.

                                          快速回复 返回列表