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 不是真的,说明随机数字没有重复,将新产生的随机数赋值给数组,并且输
出。
输出:


发布评论