随机行为的模拟
随机现象的数学模拟

主题一、Matlab中的统计学图形化工具为便于初学者快速认识各种分布的特征,窥探matlab统计学工具箱的性能,首先我们来试用Matlab统计学工具箱中提供的三个图形化工具:disttool,randtool,dfittool一、概率分布绘制工具在Matlab命令行中输入>> disttool图中各项:Distribution:分布类型Function:函数类型(概率密度函数/累积分布函数)Probability:当前数据点的概率值X:当前数据点坐标值(概率分布的统计变量)Mu:期望Sigma:方差Upper/Lower bound:期望和方差的可调范围例:二项分布对泊松分布的逼近1. 打开disttool,选择Distribution=Binomial; FunctionType=PDF;Trials=10;Probability=0.5。
选择菜单Edit-> Axis Properties,将X limits设为0到20,Y limits设为0到0.42.在命令行再次输入disttool,打开新的窗口,同样选择Binomial, PDF, Trials=20;Probability=0.25。
同样将X limits设为0到20,Y limits设为0到0.43.打开第三个disttool,选择Binomial,PDF,Trials=100,Probability=0.05。
同样将X limits设为0到20,Y limits设为0到0.44.打开第四个disttool,选择Distribution=Poisson;FunctionType=PDF;Lambda=5;同样将X limits设为0到20,Y limits设为0到0.4此时前面所打开的四个窗口应该已经嵌入为一个窗口中的四个标签页(见下图底部)。
如果没有,请选择菜单Desktop->Dock Figures将他们叠嵌在一起。
随机模拟的方法和应用

随机模拟的方法和应用
随机模拟是一种利用随机数生成器来模拟实验或事件的方法。
这种方法通过生成大量的随机数,从而模拟和预测各种可能的结果和情况。
随机模拟的方法可以应用于各种领域,包括但不限于以下几个方面:
1. 金融领域:随机模拟可以用于模拟股市和金融市场的波动性,帮助分析和预测股票、期货、汇率等金融产品的价格变动和风险。
2. 自然科学:随机模拟可以用于模拟物理过程、化学反应和生物系统,帮助研究人员理解复杂的自然现象和过程。
例如,模拟分子动力学可以用于研究化学反应的速率和路径。
3. 社会科学:随机模拟可以用于模拟人类行为、社会网络和经济系统,帮助研究人员了解和预测社会和经济现象的发展和变化。
例如,模拟人口增长和迁移可以帮助研究人员预测城市发展的趋势和需求。
4. 工程领域:随机模拟可以用于优化设计和评估系统的性能。
例如,在电子电路设计中,通过随机模拟来评估电路的可靠性和性能,并进行设计参数的优化。
5. 游戏开发:随机模拟可以应用于游戏的开发,为游戏中的人物行为、物理效果和游戏规则等方面提供真实且随机的模拟。
总的来说,随机模拟是一种非常有用的方法,可以帮助研究人员、工程师和决策者理解和预测各种复杂系统的行为,并帮助做出更好的决策。
随机模拟的方法和应用

随机模拟的方法和应用随机模拟是一种重要的数学方法,可以用来模拟各种现实世界中复杂的系统、行为和事件。
它的应用领域广泛,包括金融、统计学、天气预测、交通规划、工程设计等多个领域。
本文将简要介绍随机模拟的基础知识以及其在不同领域的应用。
1. 随机模拟的基础知识随机模拟的实质是通过计算机程序生成的一系列随机数,来模拟真实的随机过程。
因此,随机模拟的核心是随机数生成器。
随机数生成器需要生成能够代表真实随机事件的随机数,这需要考虑一些关键问题:如何确定随机数的分布、如何生成不相关的随机数、如何满足特定的统计性质等。
常用的随机数生成方法包括线性同余发生器、Marsaglia发生器、梅森旋转游程测试以及基于物理过程的随机数发生器。
这些方法在不同场合下各有优缺点,可以根据具体需求进行选择。
随机模拟的另一个基础是随机过程的建模。
随机过程是一组与时间有关的随机变量序列,用来描述某个系统、事件或行为的随机性质。
在进行随机模拟前,需要根据实际应用建立相应的随机过程模型,通常包括确定随机变量的分布、相关性结构以及参数等。
2. 随机模拟在金融中的应用在金融领域,随机模拟被广泛应用于风险管理、资产定价、投资组合优化等方面。
随机模拟可以通过模拟不断变化的金融市场来评估不同投资策略的风险水平和收益率。
其中,蒙特卡罗模拟是一种常用的方法,它通过生成随机数对股票价格进行模拟,以此来分析不同投资组合在不同市场情况下的表现。
此外,随机模拟还可以用来构建金融风险模型,包括VaR、CVaR等风险指标。
通过随机模拟的方法,可以不断地生成样本数据,并结合实际数据来计算风险指标,从而更加准确地评估金融投资风险。
3. 随机模拟在天气预测中的应用天气预测是一项非常重要的应用领域,也是随机模拟的重要应用之一。
天气系统具有复杂的非线性关系,因此难以建立确定性模型。
随机模拟通过计算机程序模拟大气系统、海洋系统等自然系统的复杂变化,提供了一种高效、准确的天气预测方法。
随机过程中的布朗运动模拟

随机过程中的布朗运动模拟在随机过程的研究中,布朗运动是一种重要的数学模型。
它是以物理学家罗伯特·布朗的名字命名的,用于描述微粒在液体或气体中的无规则运动。
布朗运动也被广泛应用于金融学、生物学、物理学等多个领域,因此模拟布朗运动对于探索这些领域的问题具有重要意义。
布朗运动的数学定义是一种连续随机过程,其路径是连续的但处处不可导。
它满足以下几个关键特性:1. 均值为0:布朗运动的轨迹平均上不呈现任何趋势,即在长时间内,微粒的位置变化的平均值趋于零。
2. 独立增量:布朗运动的短时间内位置的变化是相互独立的,即微粒的运动在不同时刻之间是无关的。
3. 正态分布:布朗运动的位置变化服从正态分布。
布朗运动可以通过随机游走的模拟来实现。
随机游走是一种离散的随机过程,它在每个时间步中以一定的概率向左或向右移动一个单位。
当时间步长足够小,概率足够合适时,随机游走的极限行为逼近布朗运动。
为了模拟布朗运动,我们可以参考以下步骤:步骤一:初始化参数。
设定初始位置为0,设定布朗运动的总时间T和时间步长Δt。
步骤二:进行模拟。
在每个时间步长Δt内,根据一定的概率向左或向右移动一个单位。
这里的概率可以根据正态分布生成的随机数来确定,其中均值为0,方差为Δt。
步骤三:重复步骤二直到达到总时间T。
步骤四:输出结果。
将每个时间步长的位置记录下来,用于后续的数据分析和可视化。
通过上述模拟过程,我们可以得到一条布朗运动的模拟路径。
为了增加模拟的准确性,可以进行多次模拟并取平均值。
同时,可以根据需要调整时间步长Δt和总时间T来探索不同时间尺度下的布朗运动行为。
布朗运动模拟在实际应用中具有广泛的用途。
例如,在金融学中,布朗运动被用于模拟股票价格的变化,用于衡量风险和定价衍生工具。
在生物学中,布朗运动被用于描述细胞内分子的扩散行为。
在物理学中,布朗运动被用于研究微粒受到随机力的影响时的运动轨迹。
总之,布朗运动是一种重要的随机过程模型,在不同领域的研究中起着重要的作用。
关于生物数学中的确定性模型与随机模拟

关于生物数学中的确定性模型与随机模拟关于生物数学中的确定性模型与随机模拟摘要:生物数学是将数学工具应用于生命科学中的一门学科,旨在构建生物系统的模型和分析这些模型。
在生物数学中,模型分为确定性模型和随机模型。
确定性模型假设生物系统中的各个因素都可以明确地预测和控制,因而能够得到精确和确定的结果。
而随机模型则将生物系统中的各个因素视为随机变量,无法精确定量化,因此采用概率性描述,以获得结果的概率性估计。
本文对生物数学中的确定性模型和随机模拟进行了详细的探讨,并对两者的优缺点进行了分析。
关键词:生物数学,确定性模型,随机模拟,生命科学,概率性描述正文:生物数学中的确定性模型生物数学中的确定性模型是指在研究生物系统问题时,通过利用数学工具来建立的关于生物系统物理、化学以及其他相关过程的模型,采用确定性方法求解。
确定性模型假定生物系统中的各个因素都可以明确的预测和控制,因而能够得到精确和确定的结果。
确定性模型适用于一些需要准确知道各个变量的关系和结果的情况,比如药物分析,疾病预测等情况。
确定性模型主要是以微分方程为基础,通过建立生物系统的数学模型来求解生物系统的动态变化规律。
确定性模型具有模型简便、精确和可靠等优点。
但也存在一些问题,例如模型建设过程中可能存在误差,模型假设与实际情况有差异,以及对生物系统的复杂动态变化有限制等问题。
生物数学中的随机模拟生物数学中的随机模拟是指通过随机性相关的概率统计方法来描述生物系统中的各个变量之间的相互关系,并用计算机程序进行模拟求解。
随机模拟在生物系统中涉及的问题各种各样,包括生态学的生态系统动态模拟、感染疾病模式的建模以及遗传变异的模拟等。
随机模拟具有模拟生物系统的动态运行特点,模型的灵活性高,适用于各种实验数据的应用和比较,具有预测未知变量和测试不同因素对系统行为的效果等优点。
但是随机模拟也存在一些问题,例如模型不易掌握,且随机模拟在一些复杂系统或数据难以获取时,可能会因缺乏可靠数据而受到限制。
随机游走算法,转移概率-概述说明以及解释

随机游走算法,转移概率-概述说明以及解释1.引言1.1 概述:随机游走算法是一种基于概率的算法,用于模拟随机的行为和变化过程。
它可以描述在一个有限的状态空间中,通过按照一定的规则进行状态转移,从而模拟随机选择下的状态变化。
这一算法在许多领域中有着广泛的应用,包括计算机科学、物理学、生物学、金融等。
随机游走算法的核心思想是通过定义转移概率来描述状态之间的转移规则。
在一个随机游走过程中,每个状态都有一定的概率转移到其他状态,而这些概率可以根据实际情况进行确定。
通过迭代计算,随机游走算法可以模拟出状态的分布情况,进而提供对系统行为的理解和预测。
随机游走算法具有很多重要的特性和优点。
首先,它是一种非常灵活的模型,可以适用于各种不同的问题和场景。
其次,随机游走算法能够捕捉到系统中的随机变动和不确定性,从而可以更好地解释和预测实际情况。
此外,随机游走算法具有较快的收敛速度和较低的计算复杂度,使得它成为许多算法和模型的重要基础。
然而,随机游走算法也存在一些限制和缺点。
首先,它需要事先确定好状态空间和转移概率,这对于复杂系统可能是一个挑战。
其次,随机游走算法对初始状态的选择非常敏感,不同的初始状态可能会导致完全不同的结果。
此外,随机游走算法在处理长时间序列或具有周期性特征的问题时可能存在某些局限性。
综上所述,随机游走算法是一种重要且广泛应用的算法,能够在各个领域中提供对系统行为的建模和预测。
虽然它具有一些限制和缺点,但通过进一步研究和改进,随机游走算法有望在未来的发展中发挥更大的作用。
在接下来的章节中,我们将详细介绍随机游走算法的基本概念、应用领域以及优缺点,并对其重要性和未来发展进行总结和展望。
1.2 文章结构文章结构部分的内容可以包含以下内容:文章结构部分主要介绍了整篇文章的组织结构和各个部分的主要内容,将读者引导到整个文章的框架。
2. 文章结构本文分为引言、正文和结论三个主要部分。
2.1 引言部分引言部分主要对随机游走算法进行了概述,介绍了其基本概念以及本文的目的。
高一数学备课课件:随机模拟

指向右下角的黑点, 按住鼠标左键拖动到A100.数出A1 A100单元格
中1, 2, 3, 4出现的次数m, m 为白球出现的频率.据此估计“取出白球” 100
的概率约为 m . 100
3.(1)掷两枚质地均匀的骰子,计算点数和为7的概率; (2)利用随机模拟的方法,试验120次,计算出现点数和为7的频率; (3)所得频率与概率相差大吗?为什么会有这种差异?
表10.3-4是20次模拟试验的结果.事 件A发生了14次,事件A的概率估计 值为0.70,与事件A的概率(约0.78)相 差不大.
环节五:课堂练习,巩固运用
例4 在一次奥运会男子羽毛球单打比赛中,运动员甲和乙进入了决赛.假设 每局比赛甲获胜的概率为0.6,乙获胜的概率为0.4.利用计算机模拟试验,估 计甲获得冠军的概率.
我们称利用随机模拟解决问题的方法为蒙特卡洛(Monte Carlo)方法.
环节四:辨析理解,深化概念
例3 从你所在班级任意选出6名同学,调查他们的出生月份,假设出生在 一月,二月……十二月是等可能的.设事件“至少有两人出生月份相同”, 设计一种试验方法,模拟20次,估计事件发生的概率.
解:方法1:根据假设,每个人的出生月份在12个月中是等可能的,而且 相互之间没有影响,所以观察6个人的出生月份可以看成可重复试验. 因此,可以构建如下有放回摸球试验进行模拟:在袋子中装入编号为1, 2,…,12的12个球,这些球除编号外没有什么差别.有放回地随机从袋 中摸6次球,得到6个数代表6个人的出生月份,这就完成了一次模拟试 验.如果这6个数中至少有2个相同,表示事件A发生了.重复以上模拟 试验20次,就可以统计出事件A发生的频率.
几个典型随机过程的模拟及应用

2. 随机游动(Cont)
模拟方法: 产生随机数 ~ U [0,, 1] 若0 p1 , 左移一步; 若p1 p1 p2 , 右移一步; 若p1 p2 p1 p2 p3 , 上移一步; 若p1 p2 p3 p1 p2 p3 p4 1, 下移一步; 同样根据吸收壁位置,计算质点每次移动后的位置, 如果到达过吸收壁,则被吸收。
Y
P2 P1 P0
0
X
1. 随机面积的计算(Cont)
算法如下: 1.决定最左边的点P0; 2.求P 1,使得 P 0P 1与Y 轴的夹角最小; 3.求P2,使得 P 1P 2与 P 0P 1的夹角最小;求P 3 ,使得 P2 P3与P 1P 2的夹角最小; 直到Pk 与P0重合为止。在此过程中逐步求出P0 P 1P 2, P0 P2 P3 ...的面积,将其相加,即可得到这2m个点所 张成的凸边形的面积。 重复n次,可以得到这随机面积的统计规律。
几个典型随机过程的模拟及应用
Outline
1. 2. 3. 随机面积的计算 随机游动 单服务台排队服务系统
Y
1. 随机面积的计算
○
X
某实际问题(譬如大楼的倒塌)可抽象为:试将一把 筷子先垂直放置于桌子上;放手后,筷子纷纷倒下, 求这些筷子倒下后所张成的面积的分布。 为解题的方便,先做如下几个假设: ①将筷子垂直放置于图中的格子点上。 ②所谓“随机倒下”是指筷子的底端不动,而顶端落下 后,筷子与X轴的夹角~U[0,2π]。 ③假设各筷子是相对独立地随机倒下,而这些筷子所张 成的面积是指包含这些筷子端点的最小凸多边形的面 积。
即第1个顾客在开门后21分离开(即T=21分离开)。第2个 顾客是T=23分=(10+13)分到达的,由于第一个顾客已被 服务完毕离开了,因此也不必等待,D2 =0分,服务时间 S2 13分,所以第2个顾客于C2 (23 13 0) 36分离开。 第3个顾客到达时间是X 3 31分 ( 10 13 8)分,由于 T 31分的时候,第2个顾客正在接受服务,鼓第3个顾 客先要排队,等待时间D3 (36 31) 5分。第2位离开 后第3位接受服务,服务时间S3 14分,第3位离开时刻 C3 (31 14 5) 50分;第4位到达时刻X 4 42分 (10 13 8 11)分;其等待时间D4 (50 42) 8分, 服务时间为S4 12分,离开时刻C4 62分 (42 12 8)分,....,模拟实验的部分结果见下表:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
随机行为的模拟:随机抛掷硬币和骰子出现特定面的概率——蒙特卡罗方法的计算机模拟1摘要对蒙特卡罗(Monte Carlo)方法的简介并概述了蒙特卡罗方法的概念、应用领域、求解步骤。
以抛掷硬币和骰子为例,论述了蒙特卡罗方法模拟随机行为的基本思想和基本原理。
给出了实现计算机模拟的MATLAB程序,并且通过最高达千万次级别的计算机模拟试验,准确地模拟了随机抛掷硬币和骰子出现特定面的概率。
2关键词蒙特卡罗(Monte Carlo)方法方法;计算机模拟;随机行为;模拟;概率;MATLAB 程序3引言3.1蒙特卡罗方法的概述:蒙特卡罗方法又称统计模拟法、随机抽样技术,是一种随机模拟方法,以概率和统计理论方法为基础的一种计算方法,是使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。
将所求解的问题同一定的概率模型相联系,用电子计算机实现统计模拟或抽样,以获得问题的近似解。
为象征性地表明这一方法的概率统计特征,故借用赌城蒙特卡罗命名。
3.2蒙特卡洛模拟法简介:蒙特卡洛(Monte Carlo)模拟是一种通过设定随机过程,反复生成时间序列,计算参数估计量和统计量,进而研究其分布特征的方法。
具体的,当系统中各个单元的可靠性特征量已知,但系统的可靠性过于复杂,难以建立可靠性预计的精确数学模型或模型太复杂而不便应用时,可用随机模拟法近似计算出系统可靠性的预计值;随着模拟次数的增多,其预计精度也逐渐增高。
由于涉及到时间序列的反复生成,蒙特卡洛模拟法是以高容量和高速度的计算机为前提条件的,因此只是在近些年才得到广泛推广。
3.3 蒙特卡洛模拟法提出:蒙特卡罗方法于20世纪40年代美国在第二次世界大战中研制原子弹的“曼哈顿计划”计划的成员S.M.乌拉姆和J.冯·诺伊曼首先提出。
数学家冯·诺伊曼用驰名世界的赌城—摩纳哥的Monte Carlo —来命名这种方法,为它蒙上了一层神秘色彩。
在这之前,蒙特卡罗方法就已经存在。
1777年,法国Buffon 提出用投针实验的方法求圆周率。
3.4 蒙特卡洛模拟法的应用领域:(1)、直接应用蒙特卡洛模拟:应用大规模的随机数列来模拟复杂系统,得到某些参数或重要指标。
(2)、蒙特卡洛积分:利用随机数列计算积分,维数越高,积分效率越高。
(3)、MCMC:这是直接应用蒙特卡洛模拟方法的推广,该方法中随机数的产生是采用的马尔科夫链形式。
(4)、蒙特卡罗方法在金融工程学,宏观经济学,生物医学,计算物理学(如粒子输运计算、量子热力学计算、空气动力学计算)等领域应用广泛。
3.5 蒙特卡罗解题归结为三个主要步骤:(1)、构造或描述概率过程;(2)、实现从已知概率分布抽样; (3)、建立各种估计量。
4 问题重述蒙特卡罗模拟的真正威力在于对随机行为建模。
从长期来看,一个事件的概率可以视为比值:事件的总数有效的事件数概率 )(A P下面3个随机模型:(1)、抛掷一枚正规的硬币 (2)、抛掷一个正规的骰子 (3)、抛掷一个不正规的骰子以剖析如何用蒙特卡罗方法模拟这些随机行为,以及基于MATLAB 软件的计算机实现。
5 抛掷一枚正规的硬币5.1 过程分析抛掷一枚硬币得到正面或反面的概率是1/2,我们可以把这种随机事件和[0,1]内的随机数建立联系。
概率是长期平均值,于是抛很多次时出现次数的比例接近0.5。
正面→[0,0.5],反面→(0.5,1]。
设x 为[0,1]内的随机数,f(x)定义如下:⎩⎨⎧≤<≤≤=15.05.00)(x x x f 反面,正面,f(x)将结果是正面或反面赋值到[0,1]内的一个数,随机赋值时我们可利用这个函随机数区间 出现的累积值 出现的百分比 x<0 0 0.00 0<x<0.5 0.5 0.50 5.2 符号说明n :抛掷硬币的次数COUNTER :记录得到正面的次数的计数器COUNTER/n :随机抛掷一枚正规的硬币得到正面向上的概率,n 的取值越大,得到的概率越接近理论值 i :第i 次抛掷硬币5.3 抛掷正规硬币的蒙特卡罗算法输入 模拟中生成的随机抛掷硬币的总次数n.. 输出 抛掷硬币时得到正面的概率. 第1步 初始化:COUNTER=0.第2步 对于i=1,2,…,n ,执行3,4步. 第3步 得到[0,1]内的随机数第4步 若5.00≤≤i x ,则COUNTER=COUNTER+1.否则,COUNTER 不变. 第5步 计算P (正面)=COUNTER/n. 第6步 输出正面的概率P (正面) 停止5.4MATLAB执行代码见附码(注意:重复执行代码,若不更改初始值,则每次执行,正面出现的次数会改变,正面出现的概率也随次数改变而改变)5.5结果分析下表给出了对于不同的n由随机数ix得到的结果:随着抛掷硬币次数n的增大,正面出现的概率也逐渐的接近0.5,即次数的一半。
当实验次数达到百万级以上时,模拟的概率值与理论值的误差仅为±0.0001。
6抛掷一个正规的骰子6.1过程分析一个骰子由点数{1,2,3,4,5,6}组成,抛掷一个正规的骰子,必须设计一种定义6个事件的方法。
而每个数值出现的可能性相等,所以每个数值出现的概率是1/6。
一个指定的数值出现的概率定义为:试验的总数数中指定的数值出现的次,6}{1,2,3,4,5将区间[0,1]等分为6个子区间,随机生成一个[0,1]上的随机数,它等可能的属于在6个子区间的某个区间上,这样就可将随机抛掷骰子出现的某个点数用随机生成[0,1]上的随机数属于某个子区间来模拟。
例如,随机生成的一个随机数属于[0,1/6],则认为随机抛掷一个正规的骰子出现的点数为1。
6.2符号说明n :抛掷骰子的次数COUNTER :记录次数的计数器COUNTER(j)/n :随机抛掷一个正规骰子的概率,n的取值越大,得到的概率越接近理论值i :第i次抛掷骰子j :骰子的点数6.3 抛掷一个正规骰子的蒙特卡罗算法输入 模拟中随机抛掷骰子的总数n. 输出 掷出{1,2,3,4,5,6}的百分比或概率.第1步 将COUNTER1到COUNTER6初始化为0. 第2步 对于i=1,2,…,n ,执行第3,4步 第3步 得到一个随机数,满足10≤≤i x .第4步 若i x 属于如下的区间,则相应的COUNTER+1.610≤≤i x COUNTER1=COUNTER1+1 6261≤<i x COUNTER2=COUNTER2+1 6362≤<i x COUNTER3=COUNTER3+1 6463≤<i x COUNTER4=COUNTER4+1 6564≤<i x COUNTER5=COUNTER5+1 165≤<i xCOUNTER6=COUNTER6+1第5步 计算掷出j={1,2,3,4,5,6}的概率为COUNTER(j)./n. 第6步 输出这些概率. 停止6.4 MATLAB 执行代码见附码(注意:重复执行代码,若不更改初始值,则每次执行,概率也会改变) 6.5 结果分析下表给出了掷10、100、1000、10000和100000次正规骰子的结果,掷1000005 0.3000 0.1700 0.1590 0.1758 0.1680 0.16676 0.1000 0.1400 0.1660 0.1682 0.1673 0.16677抛掷一个不正规的骰子7.1过程分析在抛掷一个正规的骰子的基础上考虑每个事件不是等可能出现的模型:抛掷一个不正规的骰子。
假定给骰子的某几个面加重使结果发生偏移。
将区间[0,1]分成6个不等长的子区间,子区间的长度代表骰子出现的某个值的概率。
例如,随机生成的一个随机数属于[0.4,0.7],对应着随机抛掷一个不正规骰子出现的点数为4的概率是0.3。
详细见下表:骰子出现的值出现的概率x的值赋值i1 0.1 [0.0,0.1] 12 0.1 (0.1,0.2] 23 0.2 (0.2,0.4] 34 0.3 (0.4,0.7] 45 0.2 (0.7,0.9] 57.2符号说明n :抛掷骰子的次数COUNTER :记录次数的计数器COUNTER(j)/n :随机抛掷一个不正规骰子的概率i :第i次抛掷骰子j :骰子的点数7.3抛掷一个不正规骰子的蒙特卡罗算法输入模拟中随机抛掷骰子的总数n.输出掷出{1,2,3,4,5,6}的百分比或概率.第1步将COUNTER1到COUNTER6初始化为0.第2步对于i=1,2,…,n,执行第3,4步第3步得到一个随机数,满足1≤x.0≤i第4步若x属于如下的区间,则相应的COUNTER+1.i≤x COUNTER1=COUNTER1+10≤1.0i<x COUNTER2=COUNTER2+11.0≤2.0ix COUNTER3=COUNTER3+1<2.0≤4.0i<x COUNTER4=COUNTER4+14.0≤7.0ix COUNTER5=COUNTER5+1<7.0≤9.0i<x COUNTER6=COUNTER6+19.0≤0.1i第5步计算掷出j={1,2,3,4,5,6}的概率为COUNTER(j)./n.第6步输出这些概率.停止7.4MATLAB执行代码见附码(注意:重复执行代码,若不更改初始值,则每次执行,概率也会改变)7.5结果分析当n=1000000,即重复进行100万次蒙特卡罗模拟试验后,得到的点数1,2,3,4,5,6的概率依次为p =0.0995 0.1002 0.1998 0.3002 0.2005 0.09998小结蒙特卡罗方法与一般计算方法有很大区别,一般计算方法对于解决多维或因素复杂的问题非常困难,而蒙特卡罗方法对于解决这方面的问题却比较简单。
其特点如下:直接追踪粒子,物理思路清晰,易于理解。
采用随机抽样的方法,较真切的模拟粒子输运的过程,反映了统计涨落的规律。
不受系统多维、多因素等复杂性的限制,是解决复杂系统粒子输运问题的好方法。
MC程序结构清晰简单。
研究人员采用MC方法编写程序来解决粒子输运问题,比较容易得到自己想得到的任意中间结果,应用灵活性强。
MC方法主要弱点是收敛速度较慢和误差的概率性质,其概率误差正比于,如果单纯以增大抽样粒子个数N来减小误差,就要增加很大的计算量。
蒙特卡罗算法已成为计算数学中不可缺少的组成部分,这主要是因为以下原因: 传统的分析方法受到了问题复杂性的限制。
MC方法直观,对实验者很有吸引力。
计算机变得更快更便宜。
量子理论的发展为我们提供了辐射与物质相互作用的截面数据。
9参考文献[1]叶其孝、姜启源,Frank R..Gioradano(美)等著,数学建模(原书第3版)[M],北京机械工业出版社,2005[2]MBA智库百科·蒙特卡罗方法/wiki/%E8%92%99%E7%89%B9%E5%8D%A1%E7%BD%9 7%E6%A8%A1%E6%8B%9F[3]百度文库·蒙特卡洛模拟法/view/4d5d6307cc175527072208a1.html [4]百度百科·蒙特卡罗模拟/view/284709.htm[5]新浪博客·Dwass (1957)蒙特卡罗模拟/s/blog_4b700c4c0100i28q.html10附码10.1抛掷一枚正规的硬币COUNTER=0;n=100; %硬币抛掷次数,赋初始值,大小可调节x=rand(1,n); %产生了n个随机数for i=1:nif x(i)>=0&&x(i)<=0.5COUNTER=COUNTER+1;endendCOUNTER %正面出现的次数P=COUNTER./n %正面出现的概率10.2抛掷一个正规的骰子for j=1:6COUNTER(j)=0;endn=10; %骰子抛掷次数,赋初始值,大小可调节x=rand(1,n); %产生了n个随机数for i=1:nif x(i)>=0&&x(i)<=1/6 COUNTER(1)=COUNTER(1)+1; elseif x(i)>1/6&&x(i)<=2/6 COUNTER(2)=COUNTER(2)+1; elseif x(i)>2/6&&x(i)<=3/6 COUNTER(3)=COUNTER(3)+1; elseif x(i)>3/6&&x(i)<=4/6 COUNTER(4)=COUNTER(4)+1; elseif x(i)>4/6&&x(i)<=5/6 COUNTER(5)=COUNTER(5)+1; elseif x(i)>5/6&&x(i)<=1 COUNTER(6)=COUNTER(6)+1; endendfor j=1:6p(j)=COUNTER(j)./n;endp %概率10.3抛掷一个不正规的骰子for j=1:6COUNTER(j)=0;endn=10; %骰子抛掷次数,赋初始值,大小可调节x=rand(1,n); %产生了n个随机数for i=1:nif x(i)>=0&&x(i)<=0.1 COUNTER(1)=COUNTER(1)+1; elseif x(i)>0.1&&x(i)<=0.2 COUNTER(2)=COUNTER(2)+1; elseif x(i)>0.2&&x(i)<=0.4 COUNTER(3)=COUNTER(3)+1; elseif x(i)>0.4&&x(i)<=0.7 COUNTER(4)=COUNTER(4)+1;elseif x(i)>0.7&&x(i)<=0.9 COUNTER(5)=COUNTER(5)+1; elseif x(i)>0.9&&x(i)<=1.0 COUNTER(6)=COUNTER(6)+1; endendfor j=1:6p(j)=COUNTER(j)./n;endp %概率。