列表

详情


现实世界中随机性多于确定性。在计算机上模拟随机的实际问题,并进行统计计算,这是非常有用的方法。为此,各种程序设计语言都有产生(伪)随机数的函数。这种函数,每调用一次,就可以获得一个位于区间(0,1)内的数。在程序运行时,多次产生的这些数会均匀地分布在 0、1 之间。在区间(0,1)内均匀分布的含义是指:任取 N 个随机数,当N足够大时,(  ) 。应用人员可以利用这种随机数来生成满足指定概率分布的数据,并利用这些数据来模拟实际问题。

某程序每获得一对随机数(x,y),都判断x2+y2≦1是否成立。如果N 对随机数中,有m对满足这个不等式,则当N 足够大时,数值m/N 将会比较接近 (  ) 。

第 1 问

A. 必然有一半数小于1/2,有一半数大于1/2

B. 大致顺序、等间隔地排列于(0,1)之间

C. 其中落在任意子区间(a,b)中的数的比率大致接近于b - a

D. 从小到大排序后,各个数都分别位于(0,1)的N 等分子区间内

第 2 问

A. π/4

B. π/2

C. 1/2

D. 1

参考答案: C A

详细解析:

各种计算机程序设计语言都配置了随机数产生函数,例如rnd()。每调用一次,就能获得一个随机数。计算机产生的随机数当然是伪随机数,还不具有真正的随机性质,但对于应用来说,足以能模拟随机数了。
程序产生的随机数序列中,任取其中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]中取得一个均匀分布的点。判断x­­2+y2≤1是否成立,就是判断该点(x,y)是否落入单位圆内。
在单位正方形中均匀分布的点中,选择一部分落入单位圆中,则这些选中的点,就会在单位圆的第一象限部分(占1/4单位圆)内均匀分布。落入这部分的点的比率大致会接近1/4单位圆与单位正方形的面积之比(π/4)。
因此,题中所叙述的程序方法,实际上就是计算π的一种方法。所取得的大量随机数对中,落入1/4单位圆的比率(m/N)的4倍,应会接近π。这种方法非常简单,也很容易快速算出π的近似值,但要得到精度较高的π值就不容易了。

上一题