首页 > 编程语言 >算法3:车羊门问题(JS)

算法3:车羊门问题(JS)

时间:2023-10-07 15:45:09浏览次数:33  
标签:大奖 车羊门 不换门 log 换门 JS 算法 let console

任务三:车羊门问题

车羊门问题”,也被称为‘三门问题、“玛丽莲问题”,是一个在电视节目上获取奖品的游戏,经常在互联网上引起争论,已经持续了几十年时间。现在要求你编写程序,得出科学的结论,以平息这场争论。
该游戏的具体规则和争论点,请同学们自行在抖音等平台上搜索了解,了解清楚了再做题。

编程思路: •设置一个变量x,记录换门后得大奖的次数; •设置一个变量y,记录不换门得大奖的次数; • 模拟 100000次游戏,每次: ◎ 随机产生一个有大奖的门号; 。 随机产生一个选择; 。排除一个选择之外的错误答案; 。如果换门后得大奖,则x加1; 。如果不换门得大奖,则y加1; • 打印详细的统计结果; •根据 x和y的值,打印你的结论。 提示: 使用Math.random()可以获得区间[0,1)上的随机值; 使用parseInt()函数可以取整;
 1 // 设置参与游戏的次数  
 2 const times = 100000;
 3 
 4 // 设置变量 x,记录换门后得大奖的次数  
 5 let x = 0;
 6 
 7 // 设置变量 y,记录不换门得大奖的次数  
 8 let y = 0;
 9 
10 // 模拟游戏  
11 for (let i = 0; i < times; i++) {
12     // 随机产生一个有大奖的门号  
13     let doorWithAward = Math.floor(Math.random() * 3) + 1;
14 
15     // 随机产生一个选择  
16     let choose = Math.floor(Math.random() * 3) + 1;
17 
18     // 排除一个选择之外的错误答案  
19     let wrongDoor = (doorWithAward - choose + 3) % 3 + 1;
20 
21     // 如果换门后得大奖,则 x 加 1  
22     if (doorWithAward === (choose - wrongDoor + 3) % 3 + 1) {
23         x++;
24     }
25 
26     // 如果不换门得大奖,则 y 加 1  
27     else if (choose === doorWithAward) {
28         y++;
29     }
30 }
31 
32 // 打印详细的统计结果  
33 console.log("换门后得大奖的概率:" + (x / times));
34 console.log("不换门得大奖的概率:" + (y / times));
35 
36 // 根据 x 和 y 的值,打印结论  
37 if (x > y) {
38     console.log("结论:换门后得大奖的概率更大");
39 } else {
40     console.log("结论:不换门得大奖的概率更大");
41 }

代码解释:

这段代码用于模拟著名的蒙提霍尔问题(Monty Hall Problem)。 首先,在控制台使用console.log打印出指定的信息。 然后,设置了参与游戏的次数 times 为100000次,设置两个变量 x 和 y 分别记录换门后得大奖的次数和不换门得大奖的次数。 接下来,通过循环来模拟游戏。每次循环中: 随机生成一个有大奖的门号 doorWithAward,范围是1到3。 随机生成一个选择 choose,范围是1到3。 根据规则排除一个选择之外的错误答案 wrongDoor,即将正确答案和选择相减取余,并加上1。 判断如果换门后得大奖,则 x 加1。 判断如果不换门得大奖,则 y 加1。 完成循环后,计算换门后得大奖的概率和不换门得大奖的概率,并用 console.log 打印出来。 最后,根据 x 和 y 的值判断换门后得大奖的概率是否更大,并打印出相应的结论。 通过这段代码,我们可以模拟蒙提霍尔问题,统计换门和不换门得大奖的概率,并得出结论。通常情况下,换门后得大奖的概率更大。

标签:大奖,车羊门,不换门,log,换门,JS,算法,let,console
From: https://www.cnblogs.com/anzhizhumo/p/17746480.html

相关文章

  • 算法1:寻找完数(JS)
    任务一:寻找完数打印10000以内的完数完数:与自己所有因子之和相等的数。1letsum=0,i,j;//定义变量sum、i和j23for(i=1;i<10000;i++){4sum=0;//初始化sum为05letfactors=[];//存储因子的数组67//寻找i的因子并计算它......
  • LVS调度算法总结
     ipvsscheduler:根据其调度时是否考虑各RS当前的负载状态,分为两种:静态方法和动态方法静态方法:仅根据算法本身进行调度1、RR:roundrobin,轮询。较常用2、WRR:WeightedRR,加权轮询。较常用3、SH:SourceHashing,实现sessionsticky,源IP地址hash。将来自于同一......
  • nginx负载均衡中常见的算法及原理有哪些?
     #1)轮询(round-robin) 轮询为负载均衡中较为基础也较为简单的算法,它不需要配置额外参数。假设配置文件中共有台服务器,该算法遍历服务器节点列表,并按节点次序每轮选择一台服务器处理请求。当所有节点均被调用过一次后,该算法将从第一个节点开始重新一轮遍历。 特点:由于......
  • Lnton羚通视频分析算法开发平台监控区域自动识别人员闯入行为 危险区域闯入算法预警系
    Lnton羚通的算法算力云平台是一款卓越的解决方案,具备出众的特点。它提供高性能、高可靠性、高可扩展性和低成本的优势,使用户能够高效地执行复杂计算任务。此外,该平台还提供广泛的算法库和工具,并支持用户上传和部署自定义算法,以增强平台的灵活性和个性化能力。危险区域闯入识别预警......
  • ClickHouse选择正确的join算法
    支持的JOIN类型 JOIN算法概览clickhouse提供了6种JOIN算法:1.直接连接(Directjoin)2.哈希连接(Hashjoin)3.并行哈希连接(Parallelhashjoin)4.优雅哈希连接(Gracehashjoin)5.全排序合并连接(Fullsortingmergejoin)6.部分合并连接(Partialmergejoin) 这......
  • 输入若干个数值存入数组中,采用冒泡算法进行升序或降序排序
    [12:38:09root@centos8~]#bashsort.shbeforesort:1475626459133973060324422175901602255661082520888121022092421146668557255975852542867817400aftersort:3060328678264592442220888175901740016022147561339711466108259758924272......
  • 探索程序员需要掌握的算法?
    文章目录一:引言二:常见算法介绍三:重点算法总结......
  • Node.js Assertion API All In One
    Node.jsAssertionAPIAllInOneNode.js断言API严格模式Instrictassertionmode,non-strictmethodsbehaveliketheircorrespondingstrictmethods.Forexample,assert.deepEqual()willbehavelikeassert.deepStrictEqual().在严格断言模式下,非严格方法的行......
  • 递归解析Json,实现生成可视化Tree+快速获取JsonPath
    内部平台的一个小功能点的实现过程,分享给大家:递归解析Json,可以实现生成可视化Tree+快速获取JsonPath。步骤:1.利用JsonPath读取根,获取JsonObject2.递归层次遍历JsonObjec,保存结点信息3.利用zTree展示结点为可视化树,点击对应树的结点即可获取对应结点的JsonPath1.利用JsonPath......
  • 10.7算法
    将有序数组转换为二叉搜索树给你一个整数数组nums,其中元素已经按升序排列,请你将其转换为一棵高度平衡二叉搜索树。高度平衡二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过1」的二叉树。 示例1:输入:nums=[-10,-3,0,5,9]输出:[0,-3,9,-10,null,5]......