如何随机获得四位不重复的数字?

项目需求

随机获得一个四位数,要求这四位数不能重复。利用发烧积木如何实现?

项目制作

项目制作思路是,建立一个文本文件,文件名称为“数字.TXT”。文件内容形如下面格式文档。

0

1

2

3

4

5

6

7

8

9

随机的从该文件中取出一行内容用于显示,随后删除该行内容,然后再取一行内容……依此类推,如此循环四次。这样就保证了取出的四位数不会出现重复数字。

注意:文本内容的第一行是“0”,所以如果取第五行,当前行值为“4”。

所需构件有:文本文件、预置循环、随机数、行编辑、普通按钮与普通标签。构件摆放与属性设置情况,如图1所示。

1

 

单击“执行”按钮,事件设置如图2所示

2

解释:事件设置分两个部分。第一部分,把行编辑置空、随机数产生范围为“9”、读取文本文件;第二部分,设置预置循环的初始化值,然后开始执行循环。

特别指出的是,初始化设置很重要,它保证了再次单击“执行”按钮时,项目能正常运行,否则项目在运行时,只能单击“执行”按钮一次。

 

在“循环过程”中,事件设置如图3所示

解释:事件设置分四个部分。

第一部分,把随机值赋给当前行号。假设随机数是“5”。

第二部分,把当前行编辑框中的内容与当前行值(数字“4”)进行连接,并把连接的结果再赋给当前编辑内容。

第三部分,删除当前行号。这样数字“4”所在的第五条被删除,这是为了保证不取到重复的数。

第四部分,设置随机数的范围。由于文本内容删除了一行,随机数的范围也随之减少一个。

下面我们模拟一下循环过程:第一次循环时,当前行编辑内容的值为“空”与当前行值“4”相连接,“空”与“4”连接的结果为“4”再赋给当前编辑内容。接下来,删除“4”所在行,随之又把随机数的范围减“1”。所以第一次循环后当前编辑内容为“4”;文本内容只剩9行,随机数的范围最大为“8”。第二次循环,假设随机值为“3”,把当前编辑内容“4”与当前行值“2”相连接,结果为“42”,然后删除第三行,把随机数的产生范围再减1……依此类推。

 

重点提示

利用删除文本文件行内容的方式,产生不重复的数。