APP下载

《概率论与数理统计》教学中随机数的Matlab实现

2023-05-30王鹏董平轩冉玉梅

电脑知识与技术 2023年2期
关键词:概率论与数理统计辅助教学函数

王鹏 董平轩 冉玉梅

关键词:概率论与数理统计;随机数;Matlab;辅助教学;函数

中图分类号:TP311 文献标识码:A

文章编号:1009-3044(2023)02-0138-03

1 引言

众所周知,自然界发生的现象可分为两类。一类现象在一定条件下发生的结果是完全可以预知的,称为必然现象。另一类现象发生的结果事先是无法准确预知的,称为随机现象。《概率论与数理统计》正是讲述随机现象统计规律的课程[1],但是在教学过程中,我们发现纯粹的概念表述和公式推导不利于学生對随机现象的理解,而且计算过程相当繁琐,计算结果也不直观,而引入Matlab作为教学辅助工具则正好能弥补传统教学方式的缺点,能取得更好的教学效果。但是在使用Matlab辅助《概率论与数理统计》教学过程中面临的一个首要问题就是要生成一个随机数,因此有必要对随机数的Matlab实现专门进行系统研究。

2 Matlab简介

Matlab是当今国际很流行的科学计算软件,Mat?lab语言是当今国际上最流行的科学与工程计算编程语言[2]。信息技术、计算机技术发展到今天,科学计算在各个领域得到了广泛的应用。在诸多方面例如控制论、系统仿真、数学计算等问题,如果自己去编写程序,不仅会消耗大量的时间,而且往往质量不高。Matlab作为一个专业的数值计算软件,提供了大量的运算函数,可以方便地进行各种复杂的数学计算,而且效率极高,同时具有可视化、编程、GUI和编辑等功能[3],因此极为适宜在《概率论和数理统计》教学中作为辅助工具,它不仅可以快速地调用函数进行概率和统计计算,同时也可以将结果可视化、直观化,极大地促进学生对课程知识的学习和理解。

3 Matlab 中的基本随机数生成函数

Matlab提供了2个基本的生成伪随机数的函数rand 和randn[4],其中rand函数用来生成[0,1]上均匀分布随机数,randn函数用来生成标准正态分布随机数。由[0,1]上均匀分布随机数可以生成其他分布的随机数,由标准正态分布随机数可以生成一般正态分布随机数。在不指明分布的情况下,通常所说的随机数是指[0,1]上均匀分布的随机数。在不同版本的Matlab 中,rand函数有几种通用的调用格式,如下表所示:

其中,输入参数应为正整数,若输入负整数,则被视为0,此时输出一个空矩阵。

下例调用rand函数生成一个4?4的随机数矩阵和一个1?10的随机数矩阵,然后再调用hist函数画出对应的频数直方图。

>> x=rand(4)

x =

0.1869 0.7094 0.6551 0.9597

0.4898 0.7547 0.1626 0.3404

0.4456 0.2760 0.1190 0.5853

0.6463 0.6797 0.4984 0.2238

>> y=x(:);

>> x=rand(1,10)

x =

0.1068 0.6538 0.4942 0.7791 0.7150

0.9037 0.8909 0.3342 0.6987 0.1978

>> hist(x)

下例调用randn函数生成一个标准正态分布N(0,1)的1行10列矩阵。

>> x=randn(1,10)

x =

0.0799 -0.9485 0.4115 0.6770 0.8577-0.6912 0.4494 0.1006 0.8261 0.5362

除了以上两个基本随机数函数之外,还可以调用randperm(N)函数,它可以生成一个1,2,...,N的一个随机排列。如下例所示:

>> randperm(6)

ans=

1 4 3 6 2 5

>> randperm(6)

ans=

5 6 4 1 3 2

>> randperm(6)

ans=

2 4 3 6 1 5

rand函数还可以用以下两种方式调用:

1) rand(method,s)

用method确定的随机数生成器生成随机数,此时用s的值初始化随机数生成器的状态。其中输入参数method用来指定随机数生成器所采用的算法,method 是字符串变量,它的可能取值如下表所示:

参数s可以理解为生成随机数序列的初始种子,它的值依赖于所选择的method参数,如果method设定为state或者twister,则s的值必须是一个0到232-1 之间的整数或者rand的输出。若method设定为seed,则s 必须是一个0 到231-2 之间的整数或者rand 的输出。

2)S=rand(method)

它返回method指定的随机数生成器的当前内部状态,并不改变所用的生成器。

需要注意的是,随机数生成器算法及初始状态共同决定了所产生的随机数序列,同样的随机数生成器算法设置为相同的初始状态,则生成相同的随机数。否则会生成不同的随机数,而Matlab每次启动时,都会重置rand函数的状态,所以在改变输入状态值之前,每次与Matlab的会话中rand函数都会生成相同的随机数序列。所以,实际上这个函数生成的是伪随机数[5],其生成机制由随机种子控制。如下例所示:

>> rand‘( twister,3);

猜你喜欢

概率论与数理统计辅助教学函数
二次函数
二次函数
函数备考精讲
《概率论与数理统计》教学创新探究
如何运用多媒体平台辅助小学数学教学
翻转课堂教学模式在《概率论与数理统计》课堂教学中的实践研究