随机行为的模拟

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

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由随机数

i

x得到的结果:

随着抛掷硬币次数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次抛掷骰子

相关文档
最新文档