2. 教学设计



7讲 随机的乐趣

点击此处下载教学设计

1.教学内容分析

本节内容首先情境带入,引出随机数的相关知识内容;随后,以Python编程软件为辅助,讲解真伪随机数、random库及其使用;之后,开展实践任务,以猜数字游戏设计为例,熟悉随机random库的使用及编程方法;然后,思维拓展,讲解真伪随机数、随机数产生方法及随机事件与概率等知识,最后,能力提升,通过Python编程计算羊车门问题。


2.学习者分析

1.学生具有一定的Python编程语言基础;

2.学生对随机事件概率有一定的了解;

3.学生具备一定的逻辑推理能力,知识迁移能力,对人工智能的技术有较强的学习兴趣。


3.学习目标确定

1.知识与技能:

①了解随机数与伪随机数的概念;

②了解 Python 中 random 库的概念与用法;

③学生能够了解随机数产生方法等基本知识。

2.过程与方法:

①通过学习random库相关内容,体会Python编程的应用;

②通过项目的编程练习,培养学生设计能力和举一反三的能力。

3.情感态度与价值观:

①养成自主学习、自主探究的能力;

②培养发现问题、解决问题的探究能力;

③通过对项目的讨论、分析、制作等活动,培养严密的逻辑思维能力。

 

4.教学重点难点

教学重点:1.掌握随机数的产生过程;

          2.掌握random库的使用;

教学难点:1.掌握 random()、randint() 等函数的用法。;

          2.灵活运用软件完成项目的制作。


5.教学流程图

7-1

7-2

6.教学活动

环节一:(情境导入)5min

教学活动1

1.教师讲授情境故事,设置悬念,吸引学生兴趣;(教师播放PPT)

教师:“每逢节假日,商城都会安排一些抽奖活动,以便吸引人气,刺激消费。小楷经常被抽奖活动吸引,闹着要去参加,一心想赢个大礼包。妈妈每次都会阻止说每次摇奖都是随机过程,中奖是小概率事件,绝大多数人都不会得奖。小楷虽然还不了解太过专业的概率知识,但是却想利用Python语言设计一个模拟抽

奖过程的小程序,来验证一下中奖的难易程度。同学们,你们是那个幸运的中奖人吗?”

学生聆听情境故事,积极回应老师,对随机概率事件产生兴趣;

教师:“好的,同学们,我们一起去想一想,中奖为什么那么难?今天我们的学习将分成三个模块,第一个模块,认识随机数;第二个模块,一起完成猜数字游戏的实践任务;第三个模块,思维拓展,学习真伪随机数、随机数产生方法及随机事件和概率等知识。”

学生聆听教师讲授。 

活动意图说明:

通过情境故事吸引学生的注意力,激发学生的学习兴趣,导入本节课的内容----随机的乐趣

环节二:(原理讲解)20min

教学活动2 

1.教师讲解随机数和伪随机数的知识内容; 

教师:“人们把在随机试验中,可能出现也可能不出现,而在大量重复试验中具有某种规律性的事件叫作随机事件。例如,在抛掷一枚硬币的试验中,“正面向上”是一个随机事件,“反面向上”是另一个随机事件。尽管能事先预测随机试验的所有可能结果,但是在进行一次试验之前不能确定哪一个结果会出现。随机数是随机事件的结果,是不确定性的产物。也就是说,随机数产生之前不可预测,产生的结果不可预测,随机事件中产生的后面那个数与前面那个数毫无关系。计算机产生的随机数是根据某一算法产生的,属于模拟随机数,具有类似随机数的性质,但并不是真正的随机数,也称为伪随机数。”

学生认真聆听教师讲解随机数和伪随机数的知识内容;

2.教师讲解random 库的知识内容,并进行相关演示;

教师:“随机数在程序设计中十分有用, Python内置了random库用于产生各种需要的伪随机数。random库中提供了一系列随机生成函数,常用的如表7-1所示。 表7-1所示的random库中,最基本的函数是seed和random函数,为了方便编程,扩展了6个随机数函数。需要注意的是,随机数产生与种子有关。例如,利用seed(10)设定种子,然后利用random()等函数每次产生一个随机数。此时,随机数的生成过程如图7-2所示。接下来做一个编程练习,练习1:产生随机整数randint函数程序及结果如图,说明:程序运行时产生的随机数为3,因此打印了三个点数。

学生聆听教师讲解random 库的知识内容,教师播放PPT,进行相关操作演示;

3. 教师讲解random 库的使用的知识内容,并进行操作演示;

教师:“利用函数库编程是Python的特色,函数库使用前需要先引用。函数库的引用方法有多种,以random库为例,具体说明如下:第一种方法,如图:这种方式下,对random库中的函数采用random.func()形式使用,例如,如图:第二种方法,如图,这种方式下,对random库中的函数可以直接采用<函数名>()的形式使用,例如,如图:下面这种方法也可以将random库的所有函数加以引用。引用了random库后,就可以体验库中各种函数的功能,如图:接下来,做一个编程练习,练习2:产生随机小数random函数,程序及结果如图。

学生聆听教师讲解中文字符串知识内容,教师播放PPT,进行相关操作演示;

4.教师讲解random 库的使用知识内容,并进行相关演示;

教师:“表7-1中所列的随机生成函数在编程中有着广泛的应用,可以用来生成整数、浮点数、奇数、偶数和字符串等。下面是一个综合应用的示例:如图;接下来做一个编程练习,练习3:产生任意范围随机整数uniform函数,程序及结果如图。

活动意图说明

配合PPT和Python编程语言进行讲解,让学生从亲身经验中体会随机数、随机产生及random库的使用等知识。

环节三:(项目制作)25min

教学活动3

教师带领学生借助软件完成猜数字游戏的编程设计;

教师:“1.实践任务:手机上有一款叫“Bulls and Cows”的猜数字小游戏,很多人把它当作一种益智类游戏在闲暇时间参与,有一定人气。通常由两个人玩,一方出数字,一方猜。也可以一个人和计算机玩,计算机随机出数字供玩家猜。猜数字游戏通常会设置猜测次数的上限,会记录玩家的成功率和用时,如图所示;请利用随机数生成的方法,设计一个模拟猜数字的小游戏,计算机随机生成一个在1~9中的整数,供参与者去猜,猜对猜错都给出提示信息。2.设计和分析:使用random模块中的randint函数生成1到9的随机点数,并存储在一个变量中。使用input()语句来收集玩家的猜测,并存储在另一个变量中。使用if语句来比较两个变量的大小,如果两个变量相等,打印“你真厉害!”,如果不相等,打印“再来一次吧”;参考代码及结果如图。”

教师操作Python编程语言,并讲解根据具体操作步骤猜数字游戏的编程设计,并进行操作演示;

学生聆听教师讲解利用Python完成猜数字游戏的编程设计的过程和方法;

教师讲解完成后,教师可留给学生5min时间让学生自己操作学习;

活动意图说明

屏幕共享,教师演示操作,培养学生动手操作能力,让学生直观学习编程设计过程,掌握逻辑结构。

环节四:(思维拓展)10min

教学活动4

1.教师讲解伪随机数与真随机数的相关内容;

教师:“随机数和随机概率事件是不确定性的产物,其结果是不可预测的,产生前也不可预见。无论计算机产生的随机数看起来多么的“随机”,也不是真正意义上的随机数。计算机是按照一定算法产生随机数的,其结果是确定的、可预见的,应该成为伪随机数。一个随机数是否是真正意义上的随机数,是不能判断的。如果存在一种判断随机数的方法,那么这个随机数就有确定性,就不是随机数。。

学生认真聆听教师讲解伪随机数与真随机数的相关内容;

2.教师讲解梅森伪随机数产生方法相关内容;

教师:“梅森旋转算法( Mersenne twister)是一个伪随机数发生算法。由松本真和西村拓士在1997年开发,基于有限二进制字段上的矩阵线性递归。可以快速产生高质量的伪随机数。梅森旋转算法是R、 Python、 Ruby、 IDL、 Free Pascal、 PHP、 Maple、 Matlab、 GNU编程语言的默认伪随机数产生器,整个伪随机数产生算法主要分为三个阶段:

第一阶段:获得基础的梅森旋转链;

第二阶段:对于旋转链进行旋转算法;

第三阶段:对于旋转算法所得的结果进行处理;算法实现的过程中,使用了梅森素数作为参数,故此得名。梅森素数很稀少,迄今才发现51个,但梅森素数多数都是数值很大的素数。数值越大意味着成为素数的概率就越低。这样的大素数特别适合做加密密钥、随机数产生器。基于梅森大素数设计的伪随机数生成算法,优点是周期非常长,均等分布,生成的伪随机数质量高,速度特别快。缺点是空间成本大,最初的版本需要 2.5kB缓存空间,精简版本也需要127 bits。。

学生认真聆听教师讲解梅森伪随机数产生方法相关内容;

3.教师讲解随机事件与概率相关内容;

教师:“(1)随机事件;为了研究随机现象,就要进行实验或对随机现象进行观察。这种实验或观察的过程称为随机试验,它具有下面两个特征:1. 可以在完全相同的条件下重复进行;2. 试验会出现哪些可能的结果在试验前是已知的,但每次试验究竟会出现哪一个结果在试验前是无法准确预知的;在随机试验中可能发生也可能不发生的事件称为随机事件。作为极端情况,把每次试验中都必然出现的事件称为必然事件;把每次试验中都不可能发生的事件称为不可能

事件;(2)概率,研究随机试验,不仅需要分析它在一定条件下可能产生的各种结果,而且还要分析各种结果发生的可能性大小。实验表明,随着试验次数的增加,事件发生的频率总在某个介于0与1之间的常数附近,而且摆动幅度很小。比如,不断重复地抛硬币,出现“正面向上”的频率总在0.5附近。在随机试验中,如果随着试验次数的增加,事件A出现的频率在某个常数p附近摆动并逐渐稳定于p,则称p为事件A的概率,记为P(A) = p。概率具有如下的性质:1.0≤ P(A)≤ 1。2.当事件A与B互不相容时,则有P(A+B) = P(A) + P(B)。3.必然事件的概率为1,不可能事件的概率为0。

学生认真聆听教师讲解随机事件与概率相关内容;

活动意图说明

增强学生对随机数产生方法及概率的认识,更好利用Python语言进行编程设计。

环节五:(展示小结)5min

教学活动5

1.学生发言,展示作品,进行逻辑代码讲解

2.教师对学生作品进行评价;

教师:“同学们,在看了大家的作品后,老师觉得大家都完成的非常好,老师给同学们一个大大的赞。”

总结本节课的知识内容,巩固本节课的知识点,铺垫下一节课。

环节六:(能力提升)5min

教学活动6

1. 教师讲解羊车门问题;

教师;“羊车门问题”出自美国一家杂志主办的一次专栏节目,问题表述如下:台上有三扇关闭的门,只知道一扇门后面停有汽车,其余两扇门后面都是山羊。参赛者只能选择打开某一扇门,并会得到门后的礼物。在开启它之前,主持人会从另外两扇门中打开一扇门,露出门后的山羊。此时,允许参赛者更换自己的选择,如图所示。

学生聆听教师讲解羊车门问题;

2.根据所学知识,利用Python编程计算羊车门问题;

教师:“请通过Python编程计算每种情况下猜中汽车的概率,然后利用随机函数模拟批量随机事件的产生,编写程序验证所得出的结论。

活动意图说明

通过项目式学习的体验效果,让学生可以更直接的体验Python编程的应用,提高学生的参与感。


7.板书设计

随机的乐趣

 

1.随机数:

随机数与伪随机数:

random库:

random库:  

2.猜数字游戏:


8.课后练习与拓展学习设计

请编写Python程序计算羊车门问题,利用随机函数模拟批量随机事件的产生