三门问题讨论

news2024/11/25 2:36:00

三门问题讨论

  • 三门问题
  • 第一种
  • 第二种

在这里插入图片描述

三门问题

三门问题(Monty Hall problem)亦称为蒙提霍尔问题、蒙特霍问题或蒙提霍尔悖论,大致出自美国的电视游戏节目Let’s Make a Deal。问题名字来自该节目的主持人蒙提·霍尔(Monty Hall)。参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门可赢得该汽车,另外两扇门后面则各藏有一只山羊。当参赛者选定了一扇门,但未去开启它的时候,节目主持人开启剩下两扇门的其中一扇,露出其中一只山羊。主持人其后会问参赛者要不要换另一扇仍然关上的门。问题是:换另一扇门是否会增加参赛者赢得汽车的机率。如果严格按照上述的条件,那么答案是会。不换门的话,赢得汽车的几率是1/3。换门的话,赢得汽车的几率是2/3。

这里有两种Java模拟程序,
第一个结论是不换门的话,赢得汽车的几率是1/3。换门的话,赢得汽车的几率是2/3。
第二个结论是换不换门结果都一样。

你支持哪一种写法呢?

第一种

public class ThreeDoorSolution {

    public static void main(String[] args) {
        // 模拟执行1万次,打印获胜的概率
        threeDoor(10000);
    }

    /**
     * 三门问题逻辑拆解
     *
     * @param numSimulations 总共执行多少轮游戏
     */
    private static void threeDoor(int numSimulations) {
        int switchWins = 0;
        int stayWins = 0;

        Random random = new Random();
        for (int i = 0; i < numSimulations; i++) {
            // 随机确定车所在的门
            int carDoor = random.nextInt(3);

            // 玩家随机选择一扇门
            int playerChoice = random.nextInt(3);

            // 主持人随机打开一扇门:要求该门不是玩家选择的,且必须是羊
            int openedDoor;
            do {
                openedDoor = random.nextInt(3);
            } while (openedDoor == carDoor || openedDoor == playerChoice);

            // 换门后的选择:不能是打开的门,不能是玩家选择的门,则是交换之后的门
            int finalChoice;
            do {
                finalChoice = random.nextInt(3);
            } while (finalChoice == playerChoice || finalChoice == openedDoor);

            // 计算是否换门获胜
            if (finalChoice == carDoor) {
                switchWins++;
            }

            // 计算不换门获胜
            if (playerChoice == carDoor) {
                stayWins++;
            }
        }

        // 输出结果
        System.out.println("在 " + numSimulations + " 次模拟中:");
        System.out.println("换门获胜的概率:" + (double) switchWins / numSimulations);
        System.out.println("不换门获胜的概率:" + (double) stayWins / numSimulations);
    }
}
10000 次模拟中:
换门获胜的概率:0.674
不换门获胜的概率:0.326

第二种

package com.jd.edi.robam;

import java.util.Random;

public class ThreeDoorSolution {

    public static void main(String[] args) {
        // 模拟执行1万次,打印获胜的概率
        threeDoor(1000000);
    }

    /**
     * 三门问题逻辑拆解
     *
     * @param numSimulations 总共执行多少轮游戏
     */
    private static void threeDoor(int numSimulations) {
        int switchWins = 0;
        int stayWins = 0;

        Random random = new Random();
        int total = 0;
        for (int i = 0; i < numSimulations; i++) {
            // 随机确定车所在的门
            int carDoor = random.nextInt(3);

            // 玩家随机选择一扇门
            int playerChoice = random.nextInt(3);

            // 主持人随机打开一扇门:要求该门不是玩家选择的,且必须是羊
            int openedDoor = random.nextInt(3);
            if (openedDoor == carDoor || openedDoor == playerChoice) {
                continue;
            }

            // 换门后的选择:不能是打开的门,不能是玩家选择的门,则是交换之后的门
            int finalChoice = random.nextInt(3);
            if (finalChoice == playerChoice || finalChoice == openedDoor) {
                continue;
            }

            // 计算是否换门获胜
            if (finalChoice == carDoor) {
                switchWins++;
            }

            // 计算不换门获胜
            if (playerChoice == carDoor) {
                stayWins++;
            }

            total++;
        }

        // 输出结果
        System.out.println("在 " + numSimulations + " 次模拟中,有效模拟" + total + "次,其中:");
        System.out.println("换门获胜的概率:" + (double) switchWins / total);
        System.out.println("不换门获胜的概率:" + (double) stayWins / total);
    }
}
1000000 次模拟中,有效模拟148182次,其中:
换门获胜的概率:0.5003104290669582
不换门获胜的概率:0.4996895709330418

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/989226.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二分查找 - 二分答案

第四部分 二分答案 最小值最大(或最大值最小)问题,二分答案区间,配合贪心、DP 等其他算法检验这个答案是否合理,最优化问题转换为 判定性问题。 「二分」的本质是二段性,并非单调性。说白了就是答案在一个区间,二分区间,直到找到最优答案。 TreeSet 的方法: E floor​…

Zstack 安装 黑群晖未找到硬盘:解决方法

错误原因&#xff1a; 发生错误的原因&#xff0c;黑群晖要求硬盘为Sata格式&#xff0c;而默认创建的硬盘格式为Virtio&#xff0c;我们要做的就是修改挂载的虚拟硬盘改为Sata格式 解决方法&#xff1a; 1、进入 ZStack&#xff0c;找到黑群晖的主机&#xff0c;查看 UUID …

BUUCTF刷题十一道(08)

文章目录 [HITCON 2017]SSRFme[b01lers2020]Welcome to Earth[CISCN2019 总决赛 Day2 Web1]Easyweb[SWPUCTF 2018]SimplePHP[NCTF2019]SQLi[网鼎杯 2018]Comment[NPUCTF2020]ezinclude[HarekazeCTF2019]encode_and_encode[CISCN2019 华东南赛区]Double Secret[网鼎杯2018]Unfin…

离谱至极!“核弹显卡”?!!

ProgrammeLL&#xff0c;启动&#xff01; 背景 2011年&#xff0c;英伟达发布了GTX590显卡&#xff0c;由于发热和功耗大&#xff0c;发生过多起因超频而电容爆炸事件。 介绍表 芯片厂商NVIDIA显卡芯片Ge Force GTX 590核心代号GF110核心频率607MHzCUDA核心512个显存频率341…

多线程快速入门

线程与进程区别 每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。线程是一组指令的集合&#xff0c;或者是程序的特殊段&#xff0c;它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程&#xff0c;它负责在单个程序里…

计算机编程中的编码是什么?

编码是信息从一种形式或格式转换为另一种形式的过程&#xff0c;也称为计算机编程语言的代码&#xff0c;简称编码。用预先规定的方法将文字、数字或其它对象编成数码&#xff0c;或将信息、数据转换成规定的电脉冲信号。编码在电子计算机、电视、遥控和通讯等方面广泛使用。编…

YOLOv8 快速入门

前言 本文是 YOLOv8 入门指南&#xff08;大佬请绕过&#xff09;&#xff0c;将会详细讲解安装&#xff0c;配置&#xff0c;训练&#xff0c;验证&#xff0c;预测等过程 YOLOv8 官网&#xff1a;ultralytics/ultralytics: NEW - YOLOv8 &#x1f680; in PyTorch > ONN…

异步编程 - 12 异步、基于事件驱动的网络编程框架 Netty

文章目录 Netty概述Netty中的一些概念Netty的线程模型Netty Server端Netty Netty 端 TCP半包与粘包问题基于Netty与CompletableFuture实现RPC异步调用 Netty概述 Netty是一个异步、基于事件驱动的网络应用程序框架&#xff0c;其对Java NIO进行了封装&#xff0c;大大简化了TC…

Milvus Cloud扩展变更:为向量数据库注入前沿增强功能

在向量数据库的不断变化中,Milvus Cloud已成为一个改变游戏规则的先锋,革新了我们存储、搜索和分析复杂向量数据的方式。通过最新版本的Milvus Cloud2.3.0,引入了一系列重要的增强和修改,为更强大、更高效的向量数据库解决方案铺平了道路。在本文中,我们将深入探讨Milvus …

自然语言处理-词向量模型-Word2Vec

通常数据的维度越高&#xff0c;能提供的信息也就越多&#xff0c;从而计算结果的可靠性就更值得信赖 如何来描述语言的特征呢&#xff0c;通常都在词的层面上构建特征&#xff0c;Word2Vec就是要把词转换成向量 假设现在已经拿到一份训练好的词向量&#xff0c;其中每一个词都…

Layui自定义列表多选

需求&#xff1a;已回访不需要分配&#xff0c;未回访的可多选分配 效果图&#xff1a; 实现方式 1&#xff0c;自定义复选 2&#xff0c;已回访的框去掉 3&#xff0c;自己写全选方法 注意&#xff1a;要想进方法一定要写lay-filter&#xff0c;才能触发方法&#xff0…

盘点使用代理IP时常会遇到的HTTP代理错误代码

如今&#xff0c;随着全球化的深入发展&#xff0c;越来越多的企业开始向海外拓展业务。跨境电商、海外营销等业务的兴起&#xff0c;使人们对HTTP代理的需求量越来越大。然而&#xff0c;在使用HTTP代理的过程中&#xff0c;常常会遇到各种错误代码&#xff0c;这些错误代码产…

Linux:进程(概念)

学习目标 1.认识冯诺依曼系统 2.认识操作系统概念与定位 (系统调用接口) 3.理解进程的概念&#xff08;PCB&#xff09; 4.理解进程的状态&#xff08;fork创建进程&#xff0c;僵尸进程及孤儿进程&#xff09; 5.了解进程的调度&#xff08;优先级&#xff0c;竞争性&#xff…

2023-2024 人工智能专业毕设如何选题

文章目录 0 简介1 如何选题2 最新毕设选题3 最后 0 简介 学长搜集分享最新的人工智能专业毕设选题&#xff0c;难度适中&#xff0c;适合作为毕业设计&#xff0c;大家参考。 学长整理的题目标准&#xff1a; 相对容易工作量达标题目新颖 1 如何选题 最近非常多的学弟学妹问…

基于单片机压力传感器MPX4115检测-报警系统-proteus仿真-源程序

一、系统方案 本设计采用52单片机作为主控器&#xff0c;液晶1602显示&#xff0c;MPX4115检测压力&#xff0c;按键设置报警&#xff0c;LED报警。 二、硬件设计 原理图如下&#xff1a; 三、单片机软件设计 1、首先是系统初始化 /***************************************…

类,这一篇文章你就懂了!

提示&#xff1a;本文主要介绍C中类相关知识及基础概念总结 渺渺何所似&#xff0c;天地一沙鸥 文章目录 一、面向对象与面向过程二、类的框架知识2.1 类的定义2.2 类的封装性2.2.1 访问限定符2.2.2 封装的概念以及实现 2.3 类的作用域及实例化2.4 类中this指针 三、六大默认成…

使用feign时提供者从request中获取不到参数值解决方法

使用feign时提供者从request中获取不到参数值解决方法 问题&#xff1a;分析&#xff1a;解决办法 问题&#xff1a; 在开发中&#xff0c;A项目需要在后端调用B项目的feign接口。B项目原来的参数接收都是在httpServletRequest里面&#xff0c;如下图: 我们知道feign接口是不…

6.Xaml CheckBox控件

1.运行图片 2.运行源码 a.xaml 源码 <Grid Name="Grid1"><!--IsThreeState="True" 这个为true的时候,有三个状态 第三个状态为什么也没有--><CheckBox Name=

Redis原理:动态字符串SDS

&#xff08;课程总结自b站黑马程序员课程&#xff09; 一、引言 Redis中保存的Key是字符串&#xff0c;value往往是字符串或者字符串的集合。可见字符串是Redis中最常用的一种数据结构。 不过Redis没有直接使用C语言中的字符串&#xff0c;因为C语言字符串存在很多问题&…

FD2257H 带有嵌入式霍尔传感器的智能电机驱动器芯片

FD2257H 带有嵌入式霍尔传感器的智能电机驱动器芯片 特征 电机驱动器与高灵敏度霍尔效应传感器 h桥MOS驱动器 锁关闭保护和自动重启功能 “软开关“相切换技术减少振动和声噪音 热停机保护&#xff08;TSD&#xff09; 可在SIP-4L包 12V或24V DC电机/风扇系统 一般说明 FD2257H…