现实世界中随机性多于确定性。在计算机上模拟随机的实际问题,并进行统计计算,这是非常有用的方法。为此,各种程序设计语言都有产生(伪)随机数的函数。这种函数,每调用一次,就可以获得一个位于区间(0,1)内的数。在程序运行时,多次产生的这些数会均匀地分布在0,1

admin2009-04-07  40

问题 现实世界中随机性多于确定性。在计算机上模拟随机的实际问题,并进行统计计算,这是非常有用的方法。为此,各种程序设计语言都有产生(伪)随机数的函数。这种函数,每调用一次,就可以获得一个位于区间(0,1)内的数。在程序运行时,多次产生的这些数会均匀地分布在0,1之间。在区间(0,1)内均匀分布的含义是指:任取N个随机数,当N足够大时,(56)。应用人员可以利用这种随机数来生成满足指定概率分布的数据,并利用这些数据来模拟实际问题。
某程序每获得一对随机数(x,y),都判断x2+y2≤1是否成立。如果N对随机数中,有m对满足这个不等式,则当N足够大时,数值m/N将会比较接近(57)。

选项 A、π/4
B、π/2
C、1/2
D、1

答案A

解析 各种计算机程序设计语言都配置了随机数产生函数,例如md()。每调用一次,就能获得一个随机数。计算机产生的随机数当然是伪随机数,还不具有真正的随机性质,但对于应用来说,足以能模拟随机数了。程序产生的随机数序列中,任取其中N个数(不一定连续),便可以考察其在(0, 1)区间中的分布情况。我们可以发现,当N比较大时,这些随机数在整个(0,1)区间内的分布将是比较均匀的,也就是说,不会过于聚集在某些地方。当然,既然是随机地均匀,那就不大会完全等间隔地分布,也不大会绝对准确地均匀分布。随机现象总是保持两方面的特征:从整体上服从某种统计规律,但从个体上说,却经常在力争偏离统计量。从理论上讲,在(0,1)区间均匀分布的随机数,落入任意子区间(a,b)的概率等于该子区间的长度b-a。因此,对足够大的N,任取N个随机数,其中落入子区间(a, b)的个数m,则m/N应比较接近b-a。例如,大致会有一半小于1/2,一半大于1/2;大致会有1/3的随机数大于1/3,而小于2/3;大致会有1/10的数,其小数点后的第二个数字是8。当然,这里的“大致”并不是精确的,只是当N足够大时可以这样来估计。程序中每次获得的随机数对(x,y),相当于在单位正方形[0,1;0,1]中取得一个均匀分布的点。判断x2y2≤1是否成立,就是判断该点(x,y)是否落入单位圆内。在单位正方形中均匀分布的点中,选择一部分落入单位圆中,则这些选中的点,就会在单位圆的第一象限部分(占1/4单位圆)内均匀分布。落入这部分的点的比率大致会接近1/4单位圆与单位正方形的面积之比(π/4)。因此,题中所叙述的程序方法,实际上就是计算π的一种方法。所取得的大量随机数对中,落入1/4单位圆的比率(m/N)的4倍,应会接近π。这种方法非常简单,也很容易快速算出π的近似值,但要得到精度较高的π值就不容易了。
转载请注明原文地址:https://jikaoti.com/ti/HqJ7FFFM
0

最新回复(0)