首页
高中语文
高中数学
高中英语
高中物理
高中化学
高中历史
高中道德与法治(政治)
高中地理
高中生物
高中音乐
高中美术
高中体育
高中信息技术
高中通用技术
资源详情
高中信息技术
学考(选考)专区
一轮复习
2022届高三信息技术选考总复习 专题16 随机数应用 课件-(34张PPT)
文档属性
名称
2022届高三信息技术选考总复习 专题16 随机数应用 课件-(34张PPT)
格式
pptx
文件大小
135.0KB
资源类型
教案
版本资源
浙教版(2019)
科目
信息技术(信息科技)
更新时间
2021-11-01 10:20:26
点击下载
图片预览
1
2
3
4
5
6
7
8
9
10
11
12
文档简介
(共34张PPT)
专题16 随机数应用
1.Rnd函数产生的是范围[0,1)的随机小数,该数乘以x再取整即VB表达式___________,能产生一个[0,x)或___________之间的随机整数,若要获取某个范围内的整数,可以平移若干单位到0开始的区间,即产生一个在[a,b]之间的随机整数的表达式为______________________。
2.表达式Int(Rnd*45)*2+11产生的是在____到_____之间的______ (选填:奇数/偶数)。
3.表达式Int(Rnd*6)*2+2产生的是在____到______之间偶数(选填:奇数/偶数)。
4.若变量i表示某个数组元素的位置,那么_____表示该位置上的数值,________表示前一位置上的数值,_________表示后一位置上的数值。
Int(Rnd*x)
[0,x-1]
Int(Rnd*(b-a+1))+a
11
99
奇数
2
12
a(i)
a(i-1)
a(i+1)
5.表达式a(i-1)+Int(Rnd*2)+1的值比a(i-1)的值大____或____。
6.关系表达式i Mod 2=a(i) Mod 2的含义是奇数位上的数是____数,偶数位上的数是____数。
7.关系表达式 i Mod 2=0 And a(i)
1
2
奇
偶
I Mod 2=1
I Mod 2=0 And a(i)>=a(i-1)
考点一 利用Rnd函数产生某个范围内的整数
【例1】 已知字母A-Z的AscII码值的范围是[65,90],则产生一个大写英文AscII码值表达式______________。
答案 Int(Rnd()*26+65)
解析 本题考核的知识点是Rnd函数与Int函数的应用。从Rnd函数产生的范围[0,1)来看,把该范围先转换一个下限是可取的,上限取不到的范围,再把该区域平移到0为起点的范围。这个新范围又是[0,1)的若干倍。具体的计算步骤如下:
[65,90]→[65,91) →[0,?)+65→[0,26)+65→[0,1)*26+65,再把这个表达式用VB语言来表示。
【变式1】 写出产生一个两位能被3整除的正整数VB表达式________________。
答案 Int(Rnd*30+4)*3
解析 两位能被3整除的最小正整数12,最大正整数是99,且不是该范围的连续正整数。由于这些数均能被3整除,把这个范围缩小1/3,即这些数符合的条件是[4,33]*3。[4,33] →[4,34) →[0,?)+4→[0,30)+4→[0,1)*30+4。
【变式2】 产生一个1分到12元的随机红包的表达式________________。
答案 Int(Rnd*1200+1)/100
解析 即产生一个[0.01,12]之间的包含两位小数的随机数,可以把该区间先扩大100倍,即产生一个[1,1200]之间的随机整数,再去除以100。[1,1200] →[1,1201) →[0,?)+1→[0,1200)+1→[0,1)*1200+1。
考点二 循环结构内部嵌套选择结构来控制程序的运行
在循环结构中嵌套选择结构或循环结构来控制程序的运行,关键要把握循环内部的条件,特别是选择结构的Else部分含义。关键要把握选择结构的Else的实际条件是什么?
【例2】 有如下VB程序段:
For i=1 To 6
a(i)=Int(Rnd*10)+1
Next i
For i=2 To 6
If i Mod 2=0 And a(i)>a(i-1) Then
C
t=a(i):a(i)=a(i-1):a(i-1)=t
Else
a(i)=a(i)-1
End If
Next i
执行程序后,数组元素a(1)到a(6)的值可能是( )
A.11,1,7,5,4,3 B.5,3,6,4,0,2
C.10,9,8,0,5,2 D.9,8,1,1,5,4
解析 产生6个数的范围是[1,10]之间的随机整数,排除A选项。如果满足条件i Mod 2=0 And a(i)>a(i-1),即i=2,4,6时,且他比他前一个数大,进行交换。关键要理解Else实际的条件有两个,即偶数位上的数比前面的小或相等或者是奇数位上的数,满足上面两个条件均要减1。B选项中第5位和6位分别是0或2,因此这两个数是不可能同时产生的,当然第5位上0是原来产生了1,由于是奇数位,因此要减1。C选项第3位和第4位上8和0可能有两种情况,一是分别产生了9和1,满足Else条件,分别减1,也可能原来产生了1和8,第3位减1,第4位发生交换。D选项第3位第4位同时不可能产生相同的数,若第4位的数是由2减1得来,那么他先应进行交换。
C
【变式3】 有如下所示VB程序段:
str1=”ABCDEFGHIJKLMNOPQRSTUVWXYZ”
s=””
For i=1 To 4
t=Int(Rnd*10)+1
If t Mod 2=i Mod 2 Then
t=t+1
Else
t=t+2
End If
s=s+Mid(str1,t,1)
Next i
List1.AddItem s
执行该程序段后,列表框List1中可能显示的内容是( )
A.BADC B.BCDY C.DEFG D.CDEF
解析 产生t值的范围是[1,10]。当i是奇数时,如果t也是奇数,加1成为偶数;若t不是奇数,则加2还是偶数,且数的范围是[2,12]。当i是偶数时,如果t也是偶数,加1成为奇数;若t不是偶数,则加2还是奇数,且数的范围是[3,11]。因此奇数位产生的是偶数,偶数位产生的奇数。选项A中不可能出现A字符,选项B中不可能出现Y字符,选项D中奇数位不可能出现C和E,偶数位不可能出现D和F。
【变式4】 有如下VB程序段:
For i=1 To 6
a(i)=Int(Rnd*10)+1
Next i
For i=2 To 6
If i Mod 2=0 And a(i)
t=a(i): a(i)=a(i-1): a(i-1)=t
Else
a(i)=a(i)+a(i-1)
End If
Next i
执行程序后,a数组各元素可能是( )
A.5,6,10,10,1,13 B.10,20,10,30,10,40
C.1,3,2,7,6,6 D.3,9,0,8,2,7
B
解析 本题主要考查学生对于随机数及在循环与分支嵌套下数组变化的理解。虽然初始化时生成的a数组值的范围是[1,10],但经过第2次循环加工,从第2个元素开始都有可能执行a(i)=a(i)+a(i-1),故a(2)、a(4)、a(6)的值范围是[2,40],故D错,且任意偶数位必定比任意奇数位大,故A、C错。
考点三 随机数可能会改变循环次数
若采用Do While 循环,利用随机数改变终值,循环变量i在增大,而终值在减少,会减少循环次数。
【例3】 有如下VB程序段:
Dim a(1 To 6) As Integer
n=6: i=1
Do While i <=n
x=Int(Rnd*10)+1
If i Mod 2=x Mod 2 Then
a(i)=x
i=i+1
Else
D
a(n)=x
n=n-1
End If
Loop
执行该程序段后,在下列选项中,数组元素a各元素值可能的是( )
A.3、4、0、6、6、8 B.1、8、9、11、1、5
C.2、5、8、6、7、10 D.5、3、3、7、7、3
解析 当产生的数与位置是同奇同偶时,放在前面,A选项中0不可能。B选项11不可能。C选项5不可能。D选项中,产生5后,后面产生的均为奇数,因此依次从后面放前面放置。
考点四 控制序列产生的数不重复
判断一个数与前面一个数或前面所有数是否重复时,往往用循环结构来查找,当条件满足时,将循环次数减去1,下次重新产生,避免数重复产生的情况;或者直接产生一个新的数,直到他们不重复。或者用一个布尔类型的数组flag,表示该下标对应的数是否已经产生过,这个控制方法将在桶排序中还要进一步学习。
【例4】 (2020·5月长兴中学)有如下VB程序段:
a(1)=Int(Rnd*90+10)\10
For i=2 To 6
a(i)=Int(Rnd*90+10)\10
If a(i)>6 Or a(i)<5 And a(i)>1 Then
D
Do While a(i)=a(i-1)
a(i)=a(i-1)*a(i) Mod 10
Loop
End If
Text1.Text=Text1.Text+Str(a(i))
Next i
执行该程序段后,文本框Text1中可能输出的是( )
A.2 9 0 7 8 B.9 3 3 4 6 C.2 7 3 4 16 D.2 9 2 6 6
解析 Int(Rnd*90+10)\10的范围中[1,9]之间,A选项中,a(3)=9,乘以[1,9]中任意数,再Mod 10,不可能等于0。B选项中,不能出现连续的两个3,C选项中,不可能出现16。
【变式5】 有如下VB程序段:
Dim a(1 To 5) As Integer,i As Integer
Dim flag As Boolean,j As Integer
a(1)=1: a(2)=1: a(3)=1: a(4)=1: a(5)=1
Randomize
For i=1 To 5
j=1: flag=True
Do While j <=i-1 And flag=True
a(i)=Int(Rnd*5+1)
If a(i)=a(j) Then
i=i-1: flag=False
End If
j=j+1
Loop
Next i
A
运行程序后 ,数组中的数据值可能是( )
A.1 4 3 1 5 B .1 1 3 5 4
C.1 2 3 5 5 D .1 3 4 5 6
解析 本题考查VB的循环结构和分支结构以及随机函数。For 循环的作用是控制产生a(i)的次数,每次Do循环j的值从1到i -1,每次随机产生一个整数a(i),一方面,a(i)的范围是[1,5],另一方面,每次产生的数与前一个不重复,否则重新产生。
【例5】 (2020·9月七彩阳光)有如下VB程序段:
a(0)=0
i=1
Do While i <=6
a(i)=Int(Rnd*5)*2+1
If Not flag(a(i)) Or a(i)>a(i-1) Then
flag(a(i))=True
i=i+1
End If
Loop
C
已知数组 flag 各元素的初值为 False,该程序段运行后,数组元素 a(1)到 a(6)的值可能为( )
A.5,1,7,4,9,3 B.7,5,9,5,3,1
C.1,5,9,3,5,9 D.3,5,9,7,7,1
解析 由语句“a(i)=Int(Rnd *5)* 2+1”可知产生的随机数为1、3、5、7、9,故排除A选项。条件Not flag(a(i))表示数组元素a(i)未产生,a(i)>a(i-1)表示a(i)与前一个数形成升序,则a(i)能保留,否则重新生成随机数。B选项a(4)=5时,两个条件都不能满足。D选项a(5)=7时,两个条件都不能满足。
1.小华设计了一个VB程序,功能如下:将40名同学的姓名放入数组a中,第一次从a(2)~a(40)中随机抽取一个数与a(1)交换,第二次从a(3)~a(40)中随机抽取一个数与a(2)交换,第三次从a(4)~a(40)中随机抽取一个数据与a(3)交换……以此类推,直到所有学生姓名随机的出现在数组a中。
For i=1 To 39
y=a(i): a(i)=a(x): a(x)=y
Next i
方框中的正确语句是( )
A.x=Int(Rnd*39)+1 B.x=Int(Rnd *40-i)+i+1
C.x=Int(Rnd*(40-i))+i+1 D.x=Int(Rnd*(i+1))+40- i
C
解析 从题中可以分析得出需要循环39次,第1次随机抽取数字的范围为2~40, 第2次为3~40,第3次为4-40……第i次为i+1~40,即[i+1 ,40]之间的随机整数。根据计算[a,b]之间随机整数的公式Int(Rnd*(b-a+1))+a,则等于Int(Rnd* (40-i))+i+1。
2.有如下 VB 程序段:
C
flag=True : i=1
Do While i <=6
x=Int(Rnd*100)+1
If flag Or x>50 Then
a(i)=x
flag=Not flag
i=i+1
End if
Loop
执行该程序段后,在下列选项中,a(1)~a(6)各元素值不可能的是( )
A.52,95,46,74,77,83 B.50,55,46,70,21,97
C.62,78,57,61,69,50 D.31,54,48,72,50,82
解析 本题考查循环过程中变量的变化规律。通过flag=Not flag语句得知,Flag的值是True和False交替出现的,当i的值为奇数是flag为True,偶数时flag为False。当i为偶数时,flag为False,只有x>50成立才会给数组a赋值,即数组a偶数位(a(2)、a(4)、a(6))上的值肯定大于50。C选项a(6)=50不能出现。
3.有如下程序段:
i=1: n=6
Do While i <=n
k=Int(Rnd*10)+1
If k Mod 5=0 Then
i=i-1
ElseIf k Mod 3=0 Then
a(n)=k
i=i+l: n=n-1
Else
a(i)=k
End If
i=i+1
Loop
数组元素的初值均为0,执行该程序段后,在下列选项中a(1)-a(6)各元素值可能的是( )
A.8,0,0,3,1,6 B.0,0,5,8,1,3
C.1,4,0,0,6,7 D.8,0,0,8,1,9
解析 产生5的倍数,将重新产生,B选项错误。产生3的倍数将放在最后,如D选项,当i=2时,产生的是9,a(2)没有被赋值,同时i=i+1,i=3,选择结构后面,i再加1,导致a(2)和a(3)均为0。A选项3不可能产生在1的前面。C选项,出现2个0时,最后一个数肯定是3的倍数。
D
4.(2020·4月浙江十校)有如下VB程序段:
For i=1 To 6
a(i)=Int(Rnd*10)+1
Next i
For i=2 To 6
If i Mod 2=1 And a(i) Mod 2=0 Then
a(i)=a(i)+a(i-1)
ElseIf i Mod 2=0 And a(i) Mod 2=1 Then
a(i)=a(i)-a(i-1)
End If
Next i
执行该程序段后,在下列选项中,a (1) ~a (6)各元素值不可能的是( )
A.1,2,3,4,7,2 B.1,2,14,-9,-5,8
C.6,8,1,4,6,10 D.6,4,14,-7,3,8
解析 当i位置上的数与i同奇同偶时,即都是奇数或都是偶数,与前面的数相加。当偶数位上的数是奇数时,减去他前面的数。因此A选项中一开始产生的数可能是1,3,1,7,3,5。B选项相加不可能得到14。
B
5.某VB程序段如下:
Dim a(1 To 6) As Integer
Randomize
a(1)=Int(Rnd*2)+1
For i=2 To 6
a(j)=Int(Rnd*i)*2+1
If a(i)
a(i)=a(i)+a(i-1)
End If
Next i
执行该程序段后,数组元素a(1)到a(6)的值可能是( )
A.2,4,6,8,10,12 B.1,1,3,7,12,23
C.2,5,9,11,10,15 D.1,3,15,16,20,23
解析 本题考查VB随机数及逻辑判断。最初时,a(1)的范围是1~2,a(2)的范围是1~3,a(3)的范围是1~5,a(4)的范围是1~7,a(5)的范围是1~9,a(6)的范围是1~11。再根据if语句进行调整,当前元素小于前面一个元素时,将这两个值相加后再赋值给当前的元素a(i)。当a(1)=2时,a(2)不可能超过3,因此可以排除AC。另外,当a(2)=3时,a(3)的值绝对不可能是15(最大值只能是5),从而排除选项D。故本题答案是B。
B
6.有如下VB程序段:
s=Text1.Text
For i=1 To Len(s)
c=Mid(s,i,1)
k=Int(Rnd()*3)
If c>=”0” And c <=”9” Then
t=(Val(c)-k+10) Mod 10
s2=s2 & t
End If
Next i
Label1.Caption=s2
若文本框Text1中的内容为“1A9”,运行上述程序,标签Label1中不可能显示的内容是( )
A.0 8 B.9 7 C.7 0 D.1 9
解析 s2字符串中只含数字字符,k的取值范围,c的值是1或9。若c=1,则(Val(c)-k+10) Mod 10的值可能是0、1、9,若c=9,则(Val(c)-k+10) Mod 10的值可能是7、8、9。所以s2的值可能是0 7、0 8、0 9、1 7、1 8、1 9、9 7、9 8、9 9。
C
7.有如下程序段:
C
For i=1 To 5
a(i)=Int(Rnd*30+10)
t=t+a(i)\10
Next i
For j=1 To t\3
If j Mod 2=1 Then a(j)=a(j)+1 Else a(j)=a(j)-1
Next j
运行程序后,数组a各个元素的值,不可能的是( )
A.40,10,32,11,17 B.34,9,33,33,31
C.12,13,14,9,10 D.31,32,33,9,21
解析 本题考核的知识点是随机数和程序的基本结构。a(i)值的范围在10~39之间,t是产生各个数的十位数,t的范围在5~15之间。40只可能出现在奇数位上,9只可能出现在偶数位上,且他们出现的位置要在循环次数范围内。C选项中,t的值为5,因此它只循环了1次,9不可能出现在第4个位置。在D选项中,9是由10-1得来,因此t的值为12。
点击下载
同课章节目录
点击下载
VIP下载