摘 要:介绍几种运用Excel演示大数定律的方法。
关键词:EXCEL;概率;大数定律
引言
大数定律又称大数法则、大数率,它是概率论与数理统计学的基本定律之一。通俗地说,这个定律就是,在试验不变的条件下,重复试验多次,随机事件发生的频率趋于一个稳定值,这个稳定值就是随机事件发生的概率。比如,我们向上抛一枚硬币,硬币落下后哪一面朝上本来是偶然的,但当我们上抛硬币的次数足够多,达到上万次甚至几百万次以后,我们就会发现,硬币每一面向上的次数约占总次数的二分之一。所以,我们说抛硬币这一事件中,正面和反面出现的概率都是0.5,而掷骰子事件中每个面出现的概率都是1/6。要见证大数定律,就要作大量实验。而上万次的实验太费时费力了。为了在教学中,让学生更深刻地认识大数定律,我们可利用EXCEL作直观的虚拟实验演示。以下,由易到难介绍几种演示大数定理的方法。
2、运用EXCEL函数演示大数定律
要模拟随机现象,就要产生随机分布的随机数。EXCEL的RAND()函数就能产生0~1之间(大于等于0且小于1)的随机数。假设,实验中观察的随机事件发生概率是P,那么可用RAND()产生的小于P值的随机数代表事件发生,而RAND()产生的大于或等于P值的随机数就代表事件没发生。下面开始具体的模拟演示。
设数字1代表事件发生,数字0代表事件没发生。打开EXCEL(本文使用的是EXCEL2003),新建工作簿。在新工作表Sheet1的A1单元格内输入文字:“随机事件结果”,B1输入:“随机事件发生频率”,C1中输入:“事件概率P值”。C2中为P值输入一个具体数值,如0.3。A2中输入公式:=IF(RAND()
上述演示方法,对EXCEL知识要求不高,稍微懂得EXCEL函数的人,都可以实现它。但拖拉复制上万行,也是很费力的。用自定义函数的方法,拖拉复制几行就可以达到目的了。
按Alt+F11,打开Visual Basic 编辑器。在菜单栏中点插入-模块。双击左侧工程管理器中出现的模块1图标,在出现的代码窗中输入下列代码:
Function Demo(n, k)
s = 0
For i = 1 To n
If Rnd < k Then s = s + 1
Next i
Demo = s / n
End Function
代码定义了含有两个参数(n和k)的自定义函数Demo。其中参数n为正整数,代表实验次数;参数k大于0小于1,代表事件发生概率。这里(VBA中)的Rnd与前面的函数RAND()一样,可产生大于等于0且小于1的随机数。当Rnd小于概率值K时,事件发生一次,用s = s + 1记录下来。For循环让这个过程重复进行n次,相当于实验n次。最后返回事件发生频率Demo = s / n。
退出Visual Basic 编辑器。删除Sheet1中全部内容,否则填满公式的单元格,影响EXCEL刷新速度。Sheet1的A1单元格内输入文字:“实验次数”,B1输入:“随机事件发生频率”。A2填入10,然后向下以10倍的比率递增填至A8,这时A8值为10000000,即一千万!选中B2,点插入函数,在出现的插入函数对话框中,用选择类别的下拉列表找到用户自定义类,会看到你定义好的函数Demo,选中它确定,出现函数参数对话框,参数N中填入A1,参数K中填入某个概率值,如0.3,确定。将B2拖拉复制到B8,实验结果便出现了。它也很直观地演示了大数定律的内容。
4、运用VBA编程演示大数定律
如果你了解VBA,那么,你不用在单元格中填入任何函数,只要点一下按钮就可以完成演示。
在新工作表Sheet1的A1单元格内输入文字:“实验次序”,B1输入:“实验结果”,C1输入:“随机事件发生频率”。D1输入:“预设实验次数”,E1输入:“预设概率值”。
菜单中点视图-工具栏-控件工具箱。工具箱中选择命令按钮,光标变成十字,在D5:E6区域拖拉绘出一大小合适的按钮。按钮上点右键,在属性对话框中将Caption属性改为“开始演示”。双击按钮,出现VBA代码框,为按钮输入下列代码:
Private Sub CommandButton1_Click()
Worksheets(""Sheet1"").Columns(""a"").Clear
Worksheets(""Sheet1"").Columns(""b"").Clear
Worksheets(""Sheet1"").Columns(""c"").Clear
n = Cells(2, 4)
p = Cells(2, 5)
For i = 1 To n
Cells(i, 1) = i
If Rnd < p Then x = 1 Else x = 0
Cells(i, 2) = x
Set myRange = Worksheets(""Sheet1"").Range(Cells(1, 2), Cells(i, 2))
Cells(i, 3) = Application.WorksheetFunction.Sum(myRange)/pplication.WorksheetFunction.Count(myRange)
Next i
End Sub
关闭Visual Basic 编辑器,回到Sheet1。D2中预设实验次数如20000次(不能太大,运算费时),E2中预设概率值如0.3。点击按钮,程序先清空A、B、C三列内容,然后,用Cells()将预设参数读入,再通过For循环为A列填入实验次序,B列填入实验结果,C列填入若干次实验后的事件发生频率。很快与第一种方法相似的实验结果就出来了。这次的数据不是预置在单元格中的公式算出的,而是程序自动填入的,更改实验次数,重复实验更方便。为了清晰展示数据的变化规律,一定要用C列的为纵轴,A列为横轴画一折线图,每次点击按钮折线图都会自动重绘,演示效果很好。