资源描述:
《建模骰子问题》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、数学建模作业计算机随机数模拟方法摘要:计算机模拟在建模的角度来看,有很大的作用,给出了蒙特卡洛方法,现实对象都不可避免地具有一些不确定性,所涉及的许多变量都是随机变量,许多模型是随机模型。我们对随机模型进行模拟,需要产生服从某种分布的一系列随机数,亦即服从某种分布的一系列样本值。因此,我们寻求一种简便、经济、可靠,并能在计算机上进行的产生随机数的方法。最常用的是在(0,1)区间内均匀分布的随机数,得到的随机数可看作是(0,1)区间内均匀分布的随机变量的一组样本值,其他分布的随机数可利用均匀分布随机数来产生。均匀分布随机数的产生方法有乘同余法,混合同余法;对数随机数的统计检
2、验产生要进行参数检验,分布均匀性检验,独立性检验。任意分布随机数又离散型随机数,连续性随机数,方法有反函数法,舍选法。正态分布随机数。方法:反函数法、舍选法模拟正态随机数、坐标变换法、利用屮心极限定理。关键字:计算机模拟蒙特卡洛方法乘同余法舍选法MATKAB6.0一•问题重述随着现代社会全方位的高速发展,给人们的生活带來了很大的方便。对于现实中的问题计算机会很简便,快速,准确的给了解决。计算机更是用于很有难度的问题以及各种不确定的问题的解决。在现实生活屮人们经常会用到计算机模拟求解,校检等等问题。计算机模拟使用计算机程序在计算机上模仿各种实际的运行,并通过计算机了解系统随
3、时间变化的行为或特性。通过计算机实验,按照一定的原则或规则,将现实生活中状态转换为另外一种状态进行描述和分析。计算机模拟是随着时间变化而变化的动态写照,通常模拟是按照时间来划分的。计算机模拟有静态模拟和动态模拟。数值分析中的积分中的蒙特卡洛方法是典型的静态方法。对于难于用用数学公式表示的系统或者没有建立和求解数学模型的有效方法。对于数学分析与计算过程过于复杂的计算机模拟可能会提供简单有效的方法。在现实环境中难于进行试验或者观察的,计算机模拟式唯一可行的方法。对于过多的方案进行最优化选择。在现实生活中,骰子共有六面,人们随便一掷,可能出现六中情况,那么六个面中的数字出现的概
4、率又会是什么呢?这也就需要计算机模拟。二・问题分析在我们的实际生活中,随机数是怎么产生的?我就以掷骰子为例来说下,抛硬币,掷骰子时他并没有什么逻辑,而是随机的产生的一些数,掷骰子并不是由什么大脑控制的,也不是胡思乱想就出现的随机数字。对于掷骰子每个数字朝上面的概率都是一样的,用计算机来模拟,掷的次数越多,概率就越接近理论值。像这种在我们实际操作屮计算复杂,又不精确的情况下只能用计算机来进行数学模拟。三・模型假设假设掷骰子是在理想的条件下进行的,减少一些相对误差,提高试验模拟的精确值。掷骰子的次数是5000次。对于硬币的抛法也是在那样的环境下进行的。rtl假设知,掷骰子是服
5、从正态随机分布的,掷5000次产生服从U(O,1啲随机数R2。112将区间(0,1)划分为六等份。若05R2Y—则对应骰子点数为1;若—5R2Y—,则对6,662334应骰子点数为2;若—5R2Y?,则对应骰子点数为3;若—5R2Y—,则对应骰子点数6666455为4;若;5R2y2,则对应骰子点数为5;若±R2yI,则对应骰子点数为6;下面666用MATLAB语言来编写程序,需要建立一个M文件。骰子是均匀的立方体,所以在一个骰子的六个面屮,每个买你的点数出现的机会是相等的,其概率为2,—个骰子掷一次可以看作是一次随机试验,抛投多次可以看作是多次6独立随机试验。定义A={
6、抛头一次出现随机点数},则p=p(A)=丄,设X表示k=5000独立试验屮事6件A发生的次数,则X为以随机变量,且X~B(k,p),即(p、iP(X=i)=P(1-P)i,j=o,l,2,・・・・,koIk丿clc;clear;kl=0;k2=0;k3=0;Rl=rand(l,20);fori=l:20ifRl(i)<=0.5R2=rand(l,6);if(R2(l)=0)I(R2(l)v护&R2⑴>二玩)
7、(R2(l)v號&R2⑴>二肌)%判断骰子数是否为1,2,3kl=kl+lelseif(R2⑴v的&R2⑴>二韭)
8、(R2⑴&R2⑴饥)%判断骰
9、子数是否为4,5k2=k2+lelseifR2(1)<=1&R2(1)>=%%骰子数是6k3=k3+lendelsekl=kl+lendifi==20E=(k2+k3)/20El=O*kV2O+l*ky2O+2*k3Z2Oendend用键盘输入要投掷的次数5000,然后就可以得到每个面出现的概率。硬币的抛投也是根据一定的次数来统计出来的数值,进行概率统计计算。用下表来进行掷骰子5000次实验数据的统计:骰子点数123456岀现次数829833836825839838概率0.16580.16660.16720.17040.167