一个理科直男如何看《鱿鱼游戏》

前言

我一向不怎么喜欢看棒子片。

但是十一期间却疯狂的追着一部剧:《鱿鱼游戏》。

这片子在全网实在是太火了,火到全球播放量1.11亿次,成为奈飞收视率最高的全球非英语原创剧。

鱿鱼游戏具有很强的现实社会的隐喻,加上各种有意思的游戏机制和刺激人心脏的画面,成功吸引了很多人的追捧。甚至包括剧中的各种道具。。

比如我看完竟然去某宝买了同款椪糖:

一个理科直男如何看《鱿鱼游戏》

除了盒子和针还有一丝还原度以外,这糖饼的质量真不咋地。厚的来简直拿针没法戳。我试了下,然后变成了这样。。。

一个理科直男如何看《鱿鱼游戏》

不光是很难拨出来,味道也完全不行。一个平均卖十几块,可想而知毛利有多高。

当然我这篇文章不是为了吐槽椪糖的。

我不知道大家在看这剧时候有没有这样想过:如果我是一个参赛者,存活的几率有多大?

估计看过剧的小伙伴都会说,百分百GG。那你知道每个游戏的生存几率有多大么,这篇文章我就从理性&归纳的角度分析下每个游戏的生存几率。

开始正文。

这剧一共6个游戏,分别是:木头人,椪糖,拔河,弹珠,玻璃桥和鱿鱼游戏。

木头人这个游戏,其实要过并不难,主要还在于大家的心理素质和第一次面对大规模屠杀时的恐惧心理,可以肯定的是游戏在场地右边的的玩家肯定存活几率大点,因为那个娃娃是从左边转头的,也就是说右边的人会比左边的人多出来大概1秒多的时间进行奔跑。

但总体来说,这个没法用数学来归纳出。我们暂且用剧中的存活概率来计算

一个理科直男如何看《鱿鱼游戏》

木头人存活概率为:(456-255)/456=44.08%

第二个游戏椪糖游戏,由于每个人拿到的图形不一样,解题思路也不一样,这游戏默认可以采用”作弊”手段,可以用火溶解,可以用舔狗大法。还涉及到一点临场的反应。同样的也无法用数学归纳来进行得出,我们同样用游戏中的存活概率参考。

一个理科直男如何看《鱿鱼游戏》

第一个游戏结束后,大家进行了投票决定回家,然后重新决定来参赛的人有187人,第二个游戏中有79人淘汰,我们可以得出:

椪糖游戏存活概率为:(187-79)/187=57.75%

第三个游戏拔河和和第四个游戏弹珠很简单,都是淘汰一半的人,存活概率都为50%。

第5个游戏是重点,玻璃桥。

18对玻璃,每对玻璃只有一块玻璃能承受人的重量,当你踩到易碎玻璃的时候,玻璃破裂,人就会摔下去GG。16个人挨个过。

当然,在得知游戏规则的前提下,我们可以很轻易的得出,最后一个人生还的概率是最大的。那每个序号的人生存的概率是多少呢,这个游戏生还多少人的概率为最大呢。

我于是为玻璃桥写了一段程序,去模拟1亿次。次数足够多,概率这个东西才有意义。

程序用java写,花了20分钟就写出来了。代码如下:

public class SquidGame {

    public static void main(String[] args) {
        StopWatch stopWatch = new StopWatch();
        stopWatch.start();
        Map map = new HashMap<>();

        //循环总次数,也就是总模拟次数
        int loopCount = 100000000;
        //桥上一共有几步
        int stepNum = 18;
        //游戏参与者一共有几人
        int peopleNum = 16;
        //每一步有多少块玻璃
        int grassNumPerStep = 2;

        //中间变量,每一次循环的生存者个数
        int surviveNum = 0;
        for (int i = 0; i < loopCount; i++) {
            surviveNum = calcSurvive(stepNum, peopleNum, grassNumPerStep);
            if (map.containsKey(surviveNum)){
                map.put(surviveNum, map.get(surviveNum) + 1);
            }else{
                map.put(surviveNum, 1);
            }
        }
        stopWatch.stop();
        System.out.println(StrUtil.format("玻璃桥步数:{}", stepNum));
        System.out.println(StrUtil.format("参与游戏的人数:{}", peopleNum));
        System.out.println(StrUtil.format("每一步块玻璃块数:{}", grassNumPerStep));
        System.out.println(StrUtil.format("模拟共耗时:{}秒", stopWatch.getTotalTimeSeconds()));
        System.out.println("*******************************************");
        System.out.println(StrUtil.format("鱿鱼游戏第5关玻璃桥模拟{}次的结果如下:", loopCount));
        for (int i = 0; i = 1 && j  0){
                //1.每一步的生存概率和每一步有几块玻璃有关,如果每一步有2块玻璃,
                //  死亡概率那就是50%,有3块玻璃,死亡概率就是66.6%,以此类推
                //2.如果死亡,survive就会减1,同时当前步数的玻璃数目也要减1。
                //  当然如果是按剧中的设定,每一步只有2块玻璃,那么这一步,死亡一次后,下一个人必定成功
                //3.如果当前步数此人存活,survive不变,那么currentStep就会加1,同时下一步的玻璃块数重置为设置值
                if (new Random().nextInt(1000) > 1000/currentGrassNum){
                    survive--;
                    currentGrassNum--;
                } else{
                    currentStep++;
                    currentGrassNum = grassNumPerStep;
                }
            } else{
                //当前步数等于最后一步 或者 没有生存者 的情况下,那么游戏结束
                break;
            }
        }
        return survive;
    }
}

程序用剧中的人数16人,走18步玻璃,每步2块玻璃(还有这玩意么?后续我要加大难度的)的参数玩了1亿次。结果如下:

一个理科直男如何看《鱿鱼游戏》

可以看到,存活7人的概率为最大。而且整个存活分布是一个典型的正态分布图:

一个理科直男如何看《鱿鱼游戏》

而每个序号的玩家分布前几位基本无生还希望,而后4位基本可以无忧。抽到16序号的人,有高达99.94%的存活率,这个游戏说到底还是一个拼人品的游戏啊。

当然这个模拟的前提是:每个人都按照游戏规则去进行。而且排除了前面一个人过去了,后面一个人不记得是哪块玻璃这种情况。

我在网上搜索了下,有很多讨论就是关于玻璃桥过法的帖子,有说人架在2根铁横梁之间过的。有说16个人团结在一起的,手拉着手,让最前面一个人去试玻璃的,还有说把衣服都脱下来,打包成一个大布球后面拖根布条,用力去砸前面一个玻璃的。

五花八门。

当然这些方法从理论上确实行的通,但是人家vip喝着小酒,大老远跑过来,能看着你们玩团队协作,急中生智?游戏的解释权还是在官方这里的。所以这些就不要想了。

仅仅是从数学的期望上来说,玻璃桥这个游戏,其实最终能存活的应该在6到8个人。而剧中最终存活的只有3个。

难道说这届正好是低于期望值的么?

如果按照游戏的标准规则来走,在前面的人每个人至少得有一次尝试未知的2块玻璃的机会,而剧中很多次出现了人性扭曲的一面,被推下去的,同归于尽的都有,这样从整个参与者团体的角度去考虑,就白白少了几次尝试的机会。而少了几次尝试的机会,会直接拉低整个团体的期望。这就是最终只存活下来3个人的原因。

在程序中,我设置了这样一个参数: grassNumPerStep,每一步有多少块玻璃。剧中的设定是2。那么如果我加大难度,把2块玻璃改成3块玻璃呢,那结果又是如何呢?(听着就觉得更加绝望)

从2块改成3块玻璃,看起来好像只是每一步的概率从50%降低到33.3%。

但是还隐藏着一个条件:2块玻璃的时候,前面一个人无论猜对还是猜错 ,那后面的人一定可以成功的进一步。而3块玻璃的时候,当前面一个人猜错失败的时候,你这时依然有50%的几率猜错。这个情况就复杂多了。

3块玻璃继续模拟一亿次的结果:

一个理科直男如何看《鱿鱼游戏》

仅仅是增加一块玻璃,存活率就如下降的如此厉害,连抽到16号签的幸运儿也只能有不到24%的生还率。估计这种设定,也就没人参加第六个游戏了吧。。。

最后一个游戏,无非就是在目前的存活者当中,决出1个出来。其实整个游戏不用算都知道拿到钱的就是1/n的机会。也就是说,无论你之前如何动脑子,作弊,推测,坑蒙拐骗,哪怕你混到最后一关了,最后的存活都要依靠人类最原始的蛮力和暴力去解决问题。

这部片子有很强的映射社会的寓意,希望在当下这个浮躁且物欲横流的社会,大家都能脚踏实地的过日子,不要想着一夜暴富。活着且持之以恒的努力,才是提高幸福感的唯一途径。

看到这里的同学,求关注,这里有硬核且有意思的原创文章,陪你一起成长。

一个理科直男如何看《鱿鱼游戏》

Original: https://www.cnblogs.com/bryan31/p/15420470.html
Author: 铂赛东
Title: 一个理科直男如何看《鱿鱼游戏》

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/686106/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • oracle10g连接自动断开,报ORA-03135错误

    /PageBeginHtml Block Begin / /自定义返回顶部小火箭/ /生成博客目录的JS 开始/ /生成博客目录的JS 结束/ Original: https://…

    技术杂谈 2023年5月31日
    068
  • nodejs中使用websockets

    websockets介绍 websockets这个新协议为客户端提供了一个更快、更有效的通信线路。像HTTP一样,websockets运行在TCP连接之上,但是它们更快,因为我们不…

    技术杂谈 2023年5月31日
    0104
  • Spring Boot下的一种导出CSV文件的代码框架

    1、前言 ​ CSV,逗号分隔值(Comma-Separated Values),即为逗号分隔的文本文件。如果值中含有逗号、换行符、制表符(Tab)、单引号及双引号,则需要用双引号…

    技术杂谈 2023年6月21日
    083
  • Win10系统的SurfacePro4如何重装系统-2 重装WIN10系统

    把SurfacePro充好电,然后关机,开机按住音量+,然后再按电源键,可以开机并进入BIOS(此前应确保优盘已经装了PE并插入Surface) 然后选择U盘启动为第一个(按住之后…

    技术杂谈 2023年5月31日
    0139
  • 根据两个向量计算它们之间的旋转矩阵

    一、简介 本文主要介绍通过给定的两个空间向量,计算出从一个向量旋转到另一个向量的旋转矩阵。 二、步骤 ① 假设两个向量分别为vectorBefore(x1,y1,z1), vect…

    技术杂谈 2023年7月23日
    065
  • 如何管理分布式团队

    如何管理分布式团队 如今,寻找和雇用所有必要的人才来建立你的数字产品是具有挑战性的。因此,许多企业选择替代解决方案,并将其项目的某些部分外包。因此,他们可以扩大专业知识,实现更大的…

    技术杂谈 2023年6月1日
    087
  • python grpc 微服务

    https://realpython.com/python-microservices-grpc/ https://www.manning.com/books/developing…

    技术杂谈 2023年7月11日
    0105
  • Git本地仓库上传Gitee后文件夹不能打开

    Git本地仓库上传Gitee后文件夹不能打开 【已解决】 Git本地仓库上传Gitee后文件夹不能打开 如果我们从本地push到远程仓库的项目,文件夹不能打开且样子是文件跟@+数字…

    技术杂谈 2023年6月21日
    090
  • 斜率优化

    斜率优化 直接看例题 例题:P3195 解析 转移方程很简单: 这里(f[i])表示前(i)个物品的最优代价。(a)为(c)(如题目)的前缀和。 [a[i]=\sum_{j=1}^…

    技术杂谈 2023年6月21日
    0108
  • 如何使能uboot的debug开关?

    答: 直接在 Original: https://www.cnblogs.com/dakewei/p/14010217.htmlAuthor: JelloTitle: 如何使能ub…

    技术杂谈 2023年5月31日
    0129
  • python-数据描述与分析(1)

    数据描述与分析 在进行数据分析之前,我们需要做的事情是对数据有初步的了解,这个了解就涉及对行业的了解和对数据本身的敏感程度,通俗来说就是对数据的分布有大概的理解,此时我们需要工具进…

    技术杂谈 2023年7月25日
    0105
  • 使用java调用 salesforce SOAP API

    可以从github上下载最新版本然后用maven工具构建 下面列下我用wsc工具打成jar包测试过程中的代码: java -cp force-wsc-27.0.0-jar-with…

    技术杂谈 2023年7月25日
    084
  • Java日志框架

    流行的日志框架 JUL Log4j JCL SLF4j Logback Log4j2 总结 依赖导入总结 日志门面 日志实现 桥接器、适配器理解 使用logback + slf4j…

    技术杂谈 2023年7月11日
    097
  • MYSQL快速安装整理

    【检查是否已安装过】 find / -name mysql 【快速安装开始】 groupadd mysql ;useradd -g mysql mysql;cd /usr/loca…

    技术杂谈 2023年7月11日
    064
  • Worktile 技术架构概要

    其实早就该写这篇博客了,一直说忙于工作没有时间,其实时间挤挤总会有的,可能就是因为懒吧!从2013年11月一直拖到现在,今天就简单谈谈 Worktile 的技术架构吧 。 Work…

    技术杂谈 2023年5月31日
    095
  • 山沟沟里的实业路(1)

    最近一个月完全脱离It技术,在一个山沟沟里做实业,天天过着远离电脑的日子,虽然辛苦,但也充实。这里没有大城市的繁华和喧嚣,有的只是蓝天,绿树和清澈的溪水,白天的燥热和晚上的清凉交织…

    技术杂谈 2023年6月1日
    081
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球