随机数序列的另一用法

IT商界

  小学一二年级的学生要经常进行大量的加减运算练习。许多学生让家长来出题,做题时,要由家长计时,做完后,还要家长批改,给家长的工作、生活带来一定的影响。笔者用VB6开发了一个数学练习机,帮助一些家长解决这个问题。

  在开发数学练习机时,笔者采用了VB6中的随机数序列生成工具──Randomize语句和Rnd函数来产生运算所需的随机数字rd1、rd2、rd3。但是,根据过去的编程经验,当学生选择不同的运算方法时,需用不同的函数或过程。另外,当学生选择“连加减”时,要求加法和减法随机出现;当学生同时选择了多种运算方法时,这些方法也要随机出现。

  笔者设置了一个随机数变量rd4,其取值范围为1、2、3、4、5、6,分别对应加法、减法、连加、连减、先加后减、先减后加等。每次出题时,根据随机数rd4的值,产生不同的运算方法。若该方法符合学生的选择,则给出该运算;否则继续产生下一个随机数rd4。每次出题的算法如下:

  rd4 = Int(6*(Rnd) + 1)

  If rd4 = 1 And Check1.Value = 1 Then

  '加,且学生选择了做加法

  …… '给出加法题目

  ElseIf rd4 = 2 And Check2.Value = 1 Then

  '减,且学生选择了做减法

  …… '给出减法题目

  ElseIf rd4 = 3 And Check3.Value = 1 Then

  '连加,且学生选择了做连加法

  …… '给出连加题目

  ElseIf rd4 = 4 And Check4.Value = 1 Then '连减,且学生选择了做连减法

  …… '给出连减题目

  ElseIf rd4 = 5 And Check3.Value = 1 And Check4.Value = 1 Then

  '先加后减,且学生选择了做连加和连减,即加减混合题

  …… '给出先加后减的题目

  ElseIf rd4 = 6 And Check3.Value = 1 And Check4.Value = 1 Then

  '先减后加,且学生选择了做连加和连减,即加减混合题

  …… '给出先减后加的题目

  Else '不出题

  End If

  这样,每次出题时,根据随机数rd4产生不可预知的运算,若运算满足学生选择,则给出该题目。若不满足,则不出题,继续产生下一个随机数rd4。当学生选择的运算是加减混合运算时,是先加后减还是先减后加是预先不知道的;当学生选择了多种运算方法时,下一道题是哪种运算也是预先不知道的。

  采用上述算法后,只用一个函数或过程即可完成出题任务。