• 三门概率问题之C#版


    前言:

    早上看到一片关于三门问题的博客http://www.cnblogs.com/twocats/p/3440398.html,抱着该博客结论的怀疑态度用C#语言写了一些代码。实验证明该博客的结论是正确,如果变换选择选中车的概率的确是2/3.

    代码:

    变量声明

           //总测试次数
           static long AllCount = 0;
           //抽到车次数
           static long CarCount = 0;
           protected static Random r = new Random(); 
            //1代表羊,2代表car
           static int x = 1;
           static int y = 2;
           static int z = 1;
    

    方法函数

           /// <summary>
           /// 启动游戏
           /// </summary>
           /// <param name="firstChoose">第一次选择</param>
           /// <param name="secondChoose">第二次选择</param>
           static void gameBegin(int firstChoose,int secondChoose)
            {
                if (firstChoose == 1)//主持人把z打开,开始第二次选择
                {
                    AllCount++;
                    switch (secondChoose)
                    {
                        //不换,依旧选择x
                        case 0:
                            break;
                        case 1: CarCount++;
                            break;
                    }
    
    
                }
                if (firstChoose == 2)//主持人把xz中其中一个打开,开始第二次选择
                {
                    //开始选择.0为不换,1为换
                    AllCount++;
                    switch (secondChoose)
                    {
                        //不换,依旧选择y
                        case 0: CarCount++;
                            break;
                        case 1:
                            break;
                    }
                }
                if (firstChoose == 3)//选择y,主持人把x门打开,开始第二次选择
                {
                    AllCount++;
                    switch (secondChoose)
                    {
                        //不换,依旧选择z
                        case 0:
                            break;
                        case 1: CarCount++;
                            break;
                    }
    
                }
            }
    

    主函数

            static void Main(String[] args)
            {
    
               
                for (int i = 0; i < 1000; i++)
                { 
                    int firstchoose = r.Next(1, 4);
                    gameBegin(firstchoose,1);
                }
                double result=(double)CarCount/AllCount;
                Console.WriteLine("总共测试了{0}次,抽到车{1}次,换抽到的概率为{2}%",AllCount,CarCount,result*100);
                Console.ReadKey();
            }
    

    结论:

    由于一些问题不能贴图,这里直接附上结果抽了1000次,抽到车690次,抽到概率69%。有问题希望大家留言

  • 相关阅读:
    在线程中进行读取并写入文件和wenjia
    Java里的IO流里的FileInputStream 的读取并在前打印行数!
    C++基础知识(前言)
    linux shell 笔记
    AngularJS图片上传功能的实现
    jQuery中事件绑定
    项目实践中--Git服务器的搭建与使用指南
    javascript跨浏览器事件对象类库
    完美运动框架(js)
    浅谈js中继承的理解和实现
  • 原文地址:https://www.cnblogs.com/jlimy/p/3443085.html
Copyright © 2020-2023  润新知