信息与计算科学专业概率统计实验研究
2015-12-15卢钰松陆尚辉黄晓航
卢钰松 陆尚辉 黄晓航
摘要:《概率論与数理统计》课程是数学类专业的一门专业基础课程.本文通过实例,阐述如何根据信息与计算科学专业特点,将概率统计课程与信息与计算科学专业其他课程相结合,设计概率统计实验,开展实践教学活动。
关键词:概率论与数理统计;实验设计;实践教学
中图分类号:G642 文献标志码:A 文章编号:1674-9324(2015)51-0236-03
一、引言
概率论与数理统计是研究和揭示随机现象统计规律性的一门数学学科[1],是信息与计算科学专业的一门必修课程.随着大数据时代的到来,在计算科学及计算机科学领域内,统计知识和统计方法的应用已越来越多,越来越广泛。几年来,在信息与计算科学专业的《概率论与数理统计》课程教学中,笔者常思考如何结合现代信息科学的需求,在实践教学环节中结合实际需要,设计与专业其他课程相结合的实验内容。这样在实践教学中,一方面能有效学习概率统计知识和方法,另一方面能不断提高学生实际应用能力,便于今后在工作中能顺利解决类似问题。
二、实践中的案例
1.模拟实证案例。“抛硬币”实验是概率论中一个经典实验,在实践教学中利用计算机模拟该实验,让学生通过实验进一步体会频率的稳定性,有助于概率这一概念的理解。在教学中笔者将该实验设计为:利用Java软件实现“抛硬币”实验,这样即开展了模拟实验,又巩固了专业知识,同时激发学生主动思考探索,提高学生学习的兴趣。以下是该实验的Java程序:
import java.math.*;
import java.util.Random;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.imageio.*;
import java.io.*;
public class yingbi
{
BufferedImage table1;
BufferedImage zheng;
BufferedImage fan;
private Button one = new Button("开始扔");
private Button two = new Button("停止");
private final int TABLE_WIDTH = 800;
private final int TABLE_HETGHT = 800;
Timer timer;
JFrame f = new JFrame("扔硬币");
// 画板对应的Canvas组件
ChessBoard chessBoard = new ChessBoard();
Random rand = new Random();
int a = 0;
int b = 0;
int c = 5;
int zongshu = 0;
int number = 0;
double pro = 0;
public void init()throws Exception
{
JPanel p = new JPanel();
table1 = ImageIO.read(new File("table1.jpg"));
zheng = ImageIO.read(new File("image/H.gif"));
fan = ImageIO.read(new File("image/T.gif"));
chessBoard.setPreferredSize(new Dimension(
TABLE_WIDTH , TABLE_HETGHT));
FListener F = new FListener();
SListener S = new SListener();
one.addActionListener(F);
two.addActionListener(S);
f.addWindowListener(new myListener());
p.add(one);
p.add(two);
f.add(chessBoard);
timer = new Timer(100, F);
//timer.start();
f.pack();
f.add(p , BorderLayout.SOUTH);
f.setVisible(true);
chessBoard.repaint();
}
class myListener extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
class FListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
timer.start();
zongshu = zongshu +1;
//System.out.println("z"+zongshu);
c = Math.random()>0.5?1:0;
if(c==0)
{
number=number+1;
}
chessBoard.repaint();
}
}
class SListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
timer.stop();
if(zongshu!=0)
{
pro = (double)number/zongshu;
System.out.println("正面总数为"+number);
System.out.println("总扔次数为"+zongshu);
System.out.println("模拟概率为:"+pro);
}
chessBoard.repaint();
}
}
public static void main(String] args)throws Exception
{
yingbi yb = new yingbi();
yb.init();
}
class ChessBoard extends JPanel
{
// 重写JPanel的paint方法,实现绘画
public void paint(Graphics g)
{
// 将绘制背景图片
g.drawImage(table1 , 0 , 0 , null);
if(c == 0)
{
a = (int)rand.nextInt(500)+40;
b = (int)rand.nextInt(500)+40;
g.drawImage(zheng ,a,b,null );
}
if(c == 1)
{
a = (int)rand.nextInt(500)+40;
b = (int)rand.nextInt(500)+40;
g.drawImage(fan,a,b,null );
}
}
}
}
通过此实验,学生既进一步了解了“抛硬币”实验的原理,又巩固了Java编程的知识。当学生通过自己的思考和努力实现这一实验,还会产生强烈的成就感,能激发学生的学习兴趣。
2.综合训练案例。综合训练实验主要是从日常生活中提炼实际问题,要求学生利用统计知识和统计方法解决问题。下面是一个实验案例:
问题:令在线考试系统中试卷份数为M,参加考试的考试人数为N,现考虑至少有两个考生抽到同一份试卷的概率P为多少?
当人数N=30,试卷份数M=300时,下面利用MATLAB计算,通过随机模拟的方法来计算P的值为:
N=30;%设置考试人数
M=300;%设置试卷数据库记录数
TestTime=100000;%模拟的次数10万次
Count=0;%统计重复的试卷记录数
for loop=1:TestTime
Number=floor(rand(1,N)*M);%用产生n个随机数
Number=sort(Number);
for i=1:n-1
flag=Number(i)-Number(i+1);%看排序后相邻有没有相同的数
if flag==0 %如果有,就说明此次模拟出现了相同试卷
Count=Count+1;
break
end
end
end
q=(TestTime-Count)/TestTime;%算出最终概率
p=1-q;
输出结果P=0.7754,因此當N=30,M=300时,P=0.7754,再以M=500/800/1000进行统计,得P=0.5851/0.4217/0.3562
该实验将概率问题用MATLAB软件进行计算,通过计算可以发现在设计在线考试系统时可通过增加试卷数据库的记录数到达有效降低试题重复率的效果。
三、总结
在信息与计算科学专业《概率论与数理统计》课程实践教学中,有效的将概率统计问题与计算机相关课程有机结合,设计出适合专业特点的实践教学内容能较好的激发学生的学习兴趣,使学生喜欢实验,主动思考,从而提高教学效果。
参考文献:
[1]浙江大学,盛骤.概率论与数理统计[M].高等教育出版社,2008.
[2]周兴才.应用型本科院校概率论与数理统计教学研究[J].襄樊学院学报,2011,(5):60-63
[3]荣腾中,黄光辉,等.信息与计算专业概率统计课程的实践教学研究[J].高等理科教育,2010,(4):108-111
[4]曾德强.在概率统计中引入数学实验的教学探讨[J].保山师专学报,2009,(5):27-30