首页 > 其他分享 >蒙特卡洛模拟(1)————三门问题

蒙特卡洛模拟(1)————三门问题

时间:2024-07-29 16:28:59浏览次数:11  
标签:randi 改变 生成 三门 概率 蒙特卡罗 蒙特卡洛 主意 模拟

目录

前言

蒙特卡罗方法又称统计模拟法,是一种随机模拟方法,以概率和统计理论方法为基础的一种计算方法,是使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。将所求解的问题同一定的概率模型相联系,用电子计算机实现统计模拟或抽样,以获得问题的近似解。为象征性地表明这一方法的概率统计特征,故借用赌城蒙特卡罗命名。

一、基础知识————matlab随机函数

1.rand(m,n)

rand(m,n)函数产生由在[0,1]之间均匀分布的随机数组成的m行n列的矩阵
rand(3) % 若只给一个输入,则会生成一个方阵
虽然rand函数只能生成0-1的数,但我们可以利用rand*a,将其变换为生成0-a上的数

2.unifrnd(a,b,m,n)

生成从a-b的一个m行n列的矩阵

3.randi([a,b],m,n)

randi([a,b],m,n)函数可在指定区间[a,b]内随机取出大小为m*n的整数矩阵

二、问题提出

你参加一档电视节目,节目组提供了ABC三扇门,主持人告诉你,其中一扇门后边有辆汽车,其它两扇门后是空的。假如你选择了B门,这时,主持人打开了C门,让你看到C门后什么都没有,然后问你要不要改选A门?
这个问题在概率论的领域是条件概率,但我们的目标就是用生成随机数的方法求出:改选与不改选成功的概率是怎么样的。

三、考虑必定成功的条件下的概率————代码实现

1.初始化变量

设置好重复次数与改变主意时的成功次数与不改变主意的成功次数

n = 100000;  % n代表蒙特卡罗模拟重复次数
a = 0;  % a表示不改变主意时能赢得汽车的次数
b = 0;  % b表示改变主意时能赢得汽车的次数

2.生成随机数,进行循环

首先生成x与y的随机数,其是从1-3的整数,x代表选择的门,y代表有汽车的门。
在实验中,我们只需要考虑改变主意还是不改变主意,因此只需要考虑x=y或者x~=y的情况。
因此,x==y时,不改变主意,a+1。
因此,x~=y时,不改变主意,b+1。

for i= 1 : n  % 开始模拟n次
    x = randi([1,3]);  % 随机生成一个1-3之间的整数x表示汽车出现在第x扇门后
    y = randi([1,3]);  % 随机生成一个1-3之间的整数y表示自己选的门
    % 下面分为两种情况讨论:x=y和x~=y
    if x == y   % 如果x和y相同,那么我们只有不改变主意时才能赢
        a = a + 1;     b = b + 0;
    else  % x ~= y ,如果x和y不同,那么我们只有改变主意时才能赢
        a = a + 0;     b = b +1;
    end
end

3.输出结果

disp(['蒙特卡罗方法得到的不改变主意时的获奖概率为:', num2str(a/n)]);
disp(['蒙特卡罗方法得到的改变主意时的获奖概率为:', num2str(b/n)]);

四、无条件概率(考虑失败)————代码实现

1.初始化变量

只是需要多加一个变量c,表示没有获奖的次数,之后除以n可以得到概率

n = 100000;  % n代表蒙特卡罗模拟重复次数
a = 0;  % a表示不改变主意时能赢得汽车的次数
b = 0;  % b表示改变主意时能赢得汽车的次数
c = 0;  % c表示没有获奖的次数

2.生成随机数,进行循环

我们这边仍然只需要考虑whether x=y。但是在这个过程中,我们需要考虑失败的情况,因此加入了change变量,使是否改变主意确定了是否失败,记录其次数

for i= 1 : n  % 开始模拟n次
    x = randi([1,3]);  % 随机生成一个1-3之间的整数x表示汽车出现在第x扇门后
    y = randi([1,3]);  % 随机生成一个1-3之间的整数y表示自己选的门
    change = randi([0, 1]); % change =0  不改变主意,change = 1 改变主意
    % 下面分为两种情况讨论:x=y和x~=y
    if x == y   % 如果x和y相同,那么我们只有不改变主意时才能赢
        if change == 0  % 不改变主意
        	a = a + 1; 
        else  % 改变了主意
            c= c+1;
        end
    else  % x ~= y ,如果x和y不同,那么我们只有改变主意时才能赢
         if change == 0  % 不改变主意
        	c = c + 1; 
        else  % 改变了主意
            b= b + 1;
         end
    end
end

3.输出结果

disp(['蒙特卡罗方法得到的不改变主意时的获奖概率为:', num2str(a/n)]);
disp(['蒙特卡罗方法得到的改变主意时的获奖概率为:', num2str(b/n)]);
disp(['蒙特卡罗方法得到的没有获奖的概率为:', num2str(c/n)]);

标签:randi,改变,生成,三门,概率,蒙特卡罗,蒙特卡洛,主意,模拟
From: https://www.cnblogs.com/dlmuwxw/p/18330289

相关文章

  • 2024.7.25 模拟赛总结
    T1icanStatement:给定一个有\(n(1\len\le10^7)\)个元素的序列\(a(a_i\le10^9)\),求满足\(i<j\)且\(a_i<a_j\)的点对\((i,j)\)中\(j-i\)的最大值。Solution:考虑什么样的\(a_i\)可能作为点对中较靠左边的元素出现。显然对于一个\(k>i\)且\(a_k......
  • 912、基于51单片机的温度控制(PID,模拟控制,除雾器)
    完整资料或代做滴滴我(有偿)目录一、设计功能二、proteus仿真三、原理图四、程序源码五、资料包括一、设计功能设计中镜片除雾器,当温度过低时启动镜片上的加热膜进行加热,从而实现对镜片上温度的控制,实现只能除雾;保持镜片温度为25度。二、proteus仿真三......
  • 模拟冲刺sprint
    用户故事1:赛事与赛程管理用户故事描述:我们渴望拥有一个智能、高效的赛事管理系统,它能够极大地简化赛事组织流程,减轻我们的工作负担,同时提升赛事的专业性和观众体验。用户能够设置和编辑多校联赛的赛事及赛程信息。任务拆分:任务1.1:设计赛事信息数据库模型(名称、时间、地......
  • 模拟噪声常见误区
    简介    噪声是模拟电路设计的一个核心问题,它会直接影响能从测量中提取的信息量,以及能获取所需信息的经济成本。遗憾的是,关于噪声有许多混淆和误导的信息,可能导致性能不佳、高成本的过渡设计或资源使用效率低下。1降低电路中的电阻值总是能改善噪声性能    ......
  • 暑假集训csp提高模拟10
    赛时rank19,T10,T225T310T4100T3挂了10pts?数学专场,套路专场,烧脑专场。幸亏我还有缓存的李超树博客,最后一个小时就溜了去打数据结构。数学好难,拜谢数学。T1黑暗型高松灯CompanyAcquisitions要用势能分析,鞅的停时定理。由于赛时这个放T1非常逆天,所以整场比赛的奖......
  • Postman中的速率限制测试:模拟API的流量控制
    Postman中的速率限制测试:模拟API的流量控制API的速率限制是服务端用来控制客户端请求频率的一种安全措施,以防止滥用和过载。在Postman中进行速率限制测试可以帮助开发者和测试人员评估API在面对高频率请求时的行为。本文将详细介绍如何在Postman中实现API的速率限制测试,并......
  • C++和R穿刺针吸活检肿瘤算法模型模拟和进化动力学量化差异模型
    ......
  • 『模拟赛』暑假集训CSP提高模拟10
    RankA.黑暗型高松灯原[CF1025G]CompanyAcquisitions第一题直接上黑。B.速度型高松灯原[HNOI2011]数学作业想递推来着,但确实没考虑矩阵加速。对矩阵的掌握感觉也没那么好了,找机会复习得。按照下发题解里的矩阵是这样的:\[\begin{bmatrix}dp_i\\i+1\\1\end{bma......
  • Python用GARCH、离散随机波动率模型DSV模拟和估计股
    原文链接:http://tecdat.cn/?p=25165 原文出处:拓端数据部落公众号这篇文章介绍了一类离散随机波动率模型,并介绍了一些特殊情况,包括GARCH和ARCH模型。本文展示了如何模拟这些过程以及参数估计。本文为这些实验编写的Python代码在文章末尾引用。离散随机波动率模型是一个......
  • 暑假集训SCP提高模拟10
    我(看着百度百科):我已经知道这场谁组的题了CTH:谁我:你想想,能在模拟赛里塞四道数学题还玩邦的,还能有谁CTH:我不知道我:我不知道CTH:我知道了我:我知道了我:我是BobB.速度型高松灯很容易发现一种暴力思路:每次都将答案乘以对应的位数,然后直接把要加的数加进去,暴力模一下,不......