- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
建模骰子问题
数
学
建
模
作
业
计算机随机数模拟方法
摘要:计算机模拟在建模的角度来看,有很大的作用,给出了蒙特卡洛方法,现实对象都不可避免地具有一些不确定性,所涉及的许多变量都是随机变量,许多模型是随机模型。我们对随机模型进行模拟,需要产生服从某种分布的一系列随机数,亦即服从某种分布的一系列样本值。因此,我们寻求一种简便、经济、可靠,并能在计算机上进行的产生随机数的方法。最常用的是在(0,1)区间内均匀分布的随机数,得到的随机数可看作是(0,1)区间内均匀分布的随机变量的一组样本值,其他分布的随机数可利用均匀分布随机数来产生。均匀分布随机数的产生方法有乘同余法,混合同余法;对数随机数的统计检验产生要进行参数检验,分布均匀性检验,独立性检验。任意分布随机数又离散型随机数,连续性随机数,方法有反函数法,舍选法。正态分布随机数。方法:反函数法、舍选法模拟正态随机数、坐标变换法、利用中心极限定理。
关键字:计算机模拟 蒙特卡洛方法 乘同余法 舍选法 MATKAB 6.0
一·问题重述
随着现代社会全方位的高速发展,给人们的生活带来了很大的方便。对于现实中的问题计算机会很简便,快速,准确的给予解决。计算机更是用于很有难度的问题以及各种不确定的问题的解决。在现实生活中人们经常会用到计算机模拟求解,校检等等问题。
计算机模拟使用计算机程序在计算机上模仿各种实际的运行,并通过计算机了解系统随时间变化的行为或特性。通过计算机实验,按照一定的原则或规则,将现实生活中状态转换为另外一种状态进行描述和分析。计算机模拟是随着时间变化而变化的动态写照,通常模拟是按照时间来划分的。计算机模拟有静态模拟和动态模拟。数值分析中的积分中的蒙特卡洛方法是典型的静态方法。对于难于用用数学公式表示的系统或者没有建立和求解数学模型的有效方法。对于数学分析与计算过程过于复杂的计算机模拟可能会提供简单有效的方法。在现实环境中难于进行试验或者观察的,计算机模拟式唯一可行的方法。对于过多的方案进行最优化选择。在现实生活中,骰子共有六面,人们随便一掷,可能出现六中情况,那么六个面中的数字出现的概率又会是什么呢?这也就需要计算机模拟。
二·问题分析
在我们的实际生活中,随机数是怎么产生的?我就以掷骰子为例来说下,抛硬币,掷骰子时他并没有什么逻辑,而是随机的产生的一些数,掷骰子并不是由什么大脑控制的,也不是胡思乱想就出现的随机数字。对于掷骰子每个数字朝上面的概率都是一样的,用计算机来模拟,掷的次数越多,概率就越接近理论值。像这种在我们实际操作中计算复杂,又不精确的情况下只能用计算机来进行数学模拟。
三·模型假设
假设掷骰子是在理想的条件下进行的,减少一些相对误差,提高试验模拟的精确值。掷骰子的次数是5000次。对于硬币的抛法也是在那样的环境下进行的。
四·模型建立与求解
由假设知,掷骰子是服从正态随机分布的,掷5000次产生服从U(0,1)的随机数R2。
将区间(0,1)划分为六等份。若则对应骰子点数为1;若,则对应骰子点数为2;若,则对应骰子点数为3;若,则对应骰子点数为4;若,则对应骰子点数为5;若,则对应骰子点数为6;下面用MATLAB语言来编写程序,需要建立一个M文件。
骰子是均匀的立方体,所以在一个骰子的六个面中,每个买你的点数出现的机会是相等的,其概率为,一个骰子掷一次可以看作是一次随机试验,抛投多次可以看作是多次独立随机试验。
定义A=,则p = p(A)=,设X表示k=5000独立试验中事件A发生的次数 ,则X为以随机变量,且X~B(k,p),即
P(X=i)=P(1-P) ,i=0,1,2,····,k。
clc;
clear;
k1=0;
k2=0;
k3=0;
R1=rand(1,20);
for i=1:20
if R1(i)=0.5
R2=rand(1,6);
if (R2(1)1/6R2(1)=0)|(R2(1)2/6R2(1)=1/6)|(R2(1)3/6R2(1)=2/6) %判断骰子数是否为1,2,3
k1=k1+1
elseif (R2(1)4/6R2(1)=3/6)|(R2(1)5/6R2(1)=4/6) %判断骰子数是否为4,5
k2=k2+1
elseif R2(1)=1R2(1)=5/6 %骰子数是6
k3=k3+1
end
else
k1=k1+1
end
if i==20
E=(k2+k3)/20
E1=0*k1/20+1*k2/20+2*k3/20
end
end
用键盘输入要投掷的次数5000,然后就可以得到每个面出现的概率。硬币的抛投也是根据一定的次数来统计出来的数值,进行概率统计计算。
用下表来进行掷骰子5000
文档评论(0)