资料中包含下列文件,点击文件名可预览资料内容
还剩17页未读,
继续阅读
所属成套资源:新教科版信息技术选修1数据与数据结构PPT课件+教案全套
成套系列资料,整套一键下载
教科版 高二选择性必修1信息技术第2单元第2课《随机抽取问题》课件+教案
展开
2.2随机抽取问题高中信息技术/教科版/选择性必修1目录1.情境导入2.体验探究3.编程实现4.课堂小结1.情境导入学习目标本节围绕“趣味知识竞赛”项目展开,通过项目活动了解随机抽取问题,学习利用线性表解决随机抽取问题,体会数据结构在解决问题中的作用和意义。本节主要包含“体验随机抽取”和“编程实现随机抽取”两个任务。2.新课讲授知识竞赛活动中抽取幸运观众的环节,就是在参加活动的现场观众中随机抽取一定数量的人作为幸运观众,可以通过抽取观众的编号或者抽取观众的姓名来实现。本任务中,我们通过抽取观众的编号来实现。抽取规则如下: ①幸运观众数量少于观众总数量; ②被抽中的观众编号不再参加此后的抽取活动。 任务一 体验随机抽取 活动1随机抽取幸运观众 任务一 体验随机抽取 活动1随机抽取幸运观众假设现场有200名观众,观众的编号范围是1~200,需要从中随机抽取10名幸运观众,抽取过程如下:第1次抽取,在200名观众中随机抽取1名幸运观众,如果抽到了180号,那么180号就不能出现在下一次的抽取过程中;第2次抽取,在199名观众中随机抽取1名幸运观众,如果抽到了88号,那么88号就不能出现在下一次的抽取过程中;第3次抽取,在 名观众中随机抽取;以此类推,最后一次抽取,是在 名观众中随机抽取。198191 任务一 体验随机抽取 活动2随机抽取竞赛题知识竞赛中随机抽取题目环节的规则如下:①题目数量和参赛选手数量相同;②抽中的题目不再放回,后面的选手在剩下的题目中随机抽取。题目的初始状态如图所示。 任务一 体验随机抽取 活动2随机抽取竞赛题第1次抽取:假设第1名选手通过摇号的方式在1~10号码中摇到了3号,那么第3题“题C”被抽中并从预抽取题目中删除。第1次抽取后,剩下9道题可供其他选手抽取,抽取后的状态如下图所示。 任务一 体验随机抽取 活动2随机抽取竞赛题第2次抽取:假设第2名选手通过摇号的方式在1~9号码中摇到了6号,那么第6题“题G”被抽中并从预抽取题目中删除。第2次抽取后,剩下8道题可供其他选手抽取,抽取后的状态如图所示。 任务一 体验随机抽取 活动2随机抽取竞赛题第3次抽取:假设第3名选手通过摇号的方式在1~8号码中摇到了8号,那么第8题“题J”被抽中并从预抽取题目中删除。第3次抽取后剩下7道题可供其他选手抽取,抽取后的状态如图所示。题A题B题D题E题F题H题I1 2 3 4 5 6 7 任务一 体验随机抽取 活动2随机抽取竞赛题假设后面的2位选手依次抽取了第1题、第5题,请按照上面的思路画出每次抽取后的状态。如果按照上述规则抽题,第6为选手抽题时的摇号范围是1~5.随机抽取随机抽取是指在一个有限数量的数据集范围内,随机选择其中的某个数据元素的过程。我们重点学习的是无放回的随机抽取,其基本原则是:上一次抽中的数据元素,不能出现在下一次的抽取过程中。3.编程实现 任务二 编程实现随机抽取 活动1 建立数据结构经过观察分析,在任务一的活动中通过每次抽取位置来获取幸运观众和竞赛题目,因此可以利用线性表来组织数据。创建线性表对象stulist和contestlist,分别存放观众编号和竞赛题目。请补全下面的代码。01. import random #导人random库02. from linearList import LinearList #导人线性表03.stulist= #创建线性表对象,存放观众编号04. contestlist= #创建线性表对象,存放竞赛题目LinearList( )LinearList( ) 任务二 编程实现随机抽取 活动2 设计算法假设需要从m位观众中随机抽取n位幸运观众,由他们来抽取n道题目,根据知识竞赛随机抽取幸运观众和题目的规则,实现随机抽取的算法描述如下。(1) 需要进行n次抽取,抽取的步骤如(2) (3) (4) 所示,如果未完成则继续抽取。(2) 根据可抽取观众总人数生成一个随机数,根据这个随机数抽取幸运观众编号,删除被抽中的观众编号(3)根据可抽取题目总数生成一个随机数,根据这个随机数抽(4)显示抽取结果 任务二 编程实现随机抽取 活动2 设计算法根据上述算法,定义随机抽取函数randSelect(stulist,contestlist)参数stulist表示待抽取的观众编号,contestlist表示待抽取的题目。请补全下面的代码。05.#随机抽取函数06.def randSelect(stulist,contestlist):07.n=contestlist.size( ) #确定抽取次数08.for i in range(n):09.#生成随机数确定观众编号位置10.randstu=random.randrange(stulist.size()) 任务二 编程实现随机抽取 活动2 设计算法根据上述算法,定义随机抽取函数randSelect(stulist,contestlist)参数stulist表示待抽取的观众编号,contestlist表示待抽取的题目。请补全下面的代码。05.#随机抽取函数06.def randSelect(stulist,contestlist):07.n=contestlist.size( ) #确定抽取次数08.for i in range(n):09.#生成随机数确定观众编号位置10.randstu=random.randrange(stulist.size( )) 任务二 编程实现随机抽取 活动2 设计算法11.stunum=stulist.getItem( ) #获取观众编号12.stulist.removeItem(randstu) #删除抽中的观众编号13.#生成随机数确定题目位置14.randtest=random.randrange(contestlist.size())15.testnum=contestlist.getItem(randtest) #获取题目16.contestlist.removeItem( )#删除抽中的题目17.#显示抽取结果18.print("第",stunum,"号观众抽取的题目为:",testnum)randsturandtest 任务二 编程实现随机抽取 活动3 编程实现假设参加本次知识竞赛活动的观众人数是200人,观众的编号是1~200,随机抽取的题目是以下10个关键词所指定的题目: 唐诗、互联网、微信、雾霾、人工智能、二维码、虚拟现实、3D打印、物联网、网络爬虫。请补全下面的代码。19. for i in range(1,201):20.stulist.appendItem(_ ) #将观众编号存入线性表中21.contestlist.appendItem("唐诗") #将题目存入线性表中22.contestlist.appendItem("互联") #将题目存人线性表中23.contestlist.appendItem("微信") #将题目存入线性表中i 任务二 编程实现随机抽取 活动3 编程实现“人工智能”“二维码”“虚拟现实”“3D打印”“物联网”“网络爬虫”stulistcontestlist将上述代码输入到一个文件中,运行该程序,显示随机抽取的幸运观众编号和题目。4.课堂小结本节学习了随机抽取的基本概念,以及利用线性表解决随机抽取问题的方法,通过利用线性表解决趣味知识竞赛随机抽取的问题,初步体会了数据结构在解决问题中的作用和意义!请同学们认真完成教材中的拓展练习哦!下节课见!