2024年4月20日发(作者:)

按键精灵脚本开发教程:随机数写法

来源:按键学院 【按键精灵】

小编今天要分享三种随机数不重复的方法 ~快来围观~

常规方法

将随机到的数字放到数组里,然后每次随机产生的数字都和数组里已有的数字进行比较,如

果有重复的则重新生成。

代码:(生成10个范围在10以内的随机数)

Dim TmpDat(10)

For i = 0 To 9

Randomize

TmpRnd = Int(rnd * 10)

For j = 0 To i - 1

If TmpDat(j)=TmpRnd Then

i = i - 1 : TmpBol = TRUE

End If

Next

If TmpBol Then TmpBol = False Else TmpDat(i) = TmpRnd : TracePrint TmpRnd

Next

分析:

1、Dim TmpDat(10) //例如,需要产生10个不重复的数字,则定义数组,数组元素个数

为10

2、For i = 0 To 9//由于数组的最小下标是从0开始的,所以循环从0开始到9,循环10次

3、Randomize //随机函数初始化

4、TmpRnd = Int(rnd * 10) //我们生成0-10范围内的数字,便于查看效果

5、For j = 0 To i - 1 //再做一次循环,将当前生成的随机数与前面生成的随机数一 一进

行比较。

例如:i=5,说明之前已经执行过5次,数组TmpDat里已经有了5个元素,它们的下标从

0-4 。

当我们想要查看当前随机到的数字有没有重复,就需要和前面的产生的随机数进行比较。

所以从0循环到i-1 ( i 自身就不需要和自身比了,所以这里需要减1,排除自身)。

6、If TmpDat(j)=TmpRnd Then//如果生成的随机数在数组里已经存在

i = i - 1 : TmpBol = TRUE//则i的值减去1,并且做一个标记,tmpbol设置为true

End If

7、If TmpBol Then TmpBol = False Else TmpDat(i) = TmpRnd : TracePrint TmpRnd

//如果TmpBol 是真的,说明随机数字重复了,不做赋值判断,将tmpbol的赋值假。

如果TmpBol 不是真的,说明随机数字没有重复,将新产生的随机数赋值给数组,并且输

出。

输出: