资源描述
1home back first prev next last 11 随机数随机数2home back first prev next last 随机数及其应用随机数及其应用 蒙特卡罗法应用蒙特卡罗法应用3home back first prev next last 随机数是专门的随机试验的结果,其重要的特性随机数是专门的随机试验的结果,其重要的特性是:它所产生的后面的那个数与前面的那个数毫是:它所产生的后面的那个数与前面的那个数毫无关系无关系 例如,掷硬币,用例如,掷硬币,用0和和1代表反、正面,可得到一个由代表反、正面,可得到一个由0、1组成的随机数列组成的随机数列 产生随机数有多种不同的方法,这些方法被称为产生随机数有多种不同的方法,这些方法被称为随机数发生器随机数发生器 真正的随机数是使用物理现象产生的:比如掷钱币、骰真正的随机数是使用物理现象产生的:比如掷钱币、骰子、转轮、使用电子元件的噪音、核裂变等等。这样的子、转轮、使用电子元件的噪音、核裂变等等。这样的随机数发生器叫做物理性随机数发生器,它们的缺点是随机数发生器叫做物理性随机数发生器,它们的缺点是技术要求比较高技术要求比较高4home back first prev next last 在实际应用中往往使用伪随机数就足够了。在实际应用中往往使用伪随机数就足够了。这些数列是这些数列是“似乎似乎”随机的数,实际上它随机的数,实际上它们是通过一个固定的、可以重复的计算方们是通过一个固定的、可以重复的计算方法产生的。计算机或计算器产生的随机数法产生的。计算机或计算器产生的随机数有很长的周期性。它们不真正地随机,因有很长的周期性。它们不真正地随机,因为它们实际上是可以计算出来的,但是它为它们实际上是可以计算出来的,但是它们具有类似于随机数的统计特征。这样的们具有类似于随机数的统计特征。这样的发生器叫做伪随机数发生器。发生器叫做伪随机数发生器。 5home back first prev next last 随机数在编程中的应用非常广泛,例如随机数在编程中的应用非常广泛,例如 游戏中,角色出现的位置和移动的方式游戏中,角色出现的位置和移动的方式 科学计算和实验模拟,等等科学计算和实验模拟,等等6home back first prev next last 随机生成一个数字,由玩家来猜。如果猜随机生成一个数字,由玩家来猜。如果猜错,提示猜大了或猜小了。如果猜对了,错,提示猜大了或猜小了。如果猜对了,记录猜测的次数,游戏结束。记录猜测的次数,游戏结束。7home back first prev next last8home back first prev next last 蒙特卡罗(蒙特卡罗(Monte Carlo)算法计算圆周率的)算法计算圆周率的主要思想:主要思想: 给定边长为给定边长为R的正方形,画其内切圆,然后在的正方形,画其内切圆,然后在正方形内随机打点,设点落在圆内的概为正方形内随机打点,设点落在圆内的概为P,则,则根据概率学原理:根据概率学原理:P = 圆面积圆面积 / 正方形面积正方形面积 PI * R * R / 2R * 2R = PI / 4。即即 PI=4P。这样,当随机打点足够多时,统计出来。这样,当随机打点足够多时,统计出来的概率就非常接近于的概率就非常接近于PI的四分之一了的四分之一了9home back first prev next last10home back first prev next last 由于由于 Scratch 本身的本身的原因,上面程序运原因,上面程序运行需要一段比较长行需要一段比较长的时间,而且圆周的时间,而且圆周率计算的精度较低,率计算的精度较低,大概为大概为3.1左右。将左右。将来采取更专业的编来采取更专业的编程语言如程语言如C语言、语言、Java语言或语言或C#,会,会计算的更快更准。计算的更快更准。11home back first prev next last为了说明蒙特卡罗法计算为了说明蒙特卡罗法计算圆周率的原理,下面在上圆周率的原理,下面在上面的计算代码中加入了动面的计算代码中加入了动画演示。画演示。在边长为在边长为100的正方形内,的正方形内,随机生成一个点的坐标随机生成一个点的坐标 (x,y),如果点到原点,如果点到原点(0,0)的距离不大于的距离不大于100,说明,说明,这个点在以原点这个点在以原点(0,0)为圆为圆心,半径为心,半径为100的四分之的四分之一圆内。下面程序中将角一圆内。下面程序中将角色色1修改为只有一个像素修改为只有一个像素的红点,利用图章功能在的红点,利用图章功能在点点(x,y)画一个红点。画一个红点。12home back first prev next last编程求解如右图所示不规编程求解如右图所示不规则形状红色区域的近似面则形状红色区域的近似面积积提示提示 将图片作为角色导入将图片作为角色导入Scratch 绘制一边长已知的正方形包绘制一边长已知的正方形包含红色图形区域含红色图形区域 随机生成正方形内的点,统随机生成正方形内的点,统计与红色区域碰撞的点数计与红色区域碰撞的点数 计算正方形面积,点与红色计算正方形面积,点与红色区域碰撞的概率,以此求得区域碰撞的概率,以此求得红色图形区域面积红色图形区域面积13home back first prev next last14home back first prev next last 随机数及其应用随机数及其应用 蒙特卡罗法应用蒙特卡罗法应用
展开阅读全文