vb计算结果不精确怎么解决(随机不重复的值)
完美解决双色球大乐透模拟选号软件选号重复问题,有需要的朋友请私信哦。
今天学习了刘金玉老师零基础VB教程的第54期,学习的主要内容是随机抽取不重复的值。
一、随机抽取不重复的值思路
第一步:假设有个数组n(9)有十个数,分别存放在n(0)至n(9)中2、要从n数组中随机抽取一个数,存放到数组m中。
第二步:从n中每次随机抽取一个,重复抽取10次,抽完,每次抽取到的值,都是不同的。从n数组中抽取不同的值的时候,只要保证每次抽取到不同的索引值即可
第三步:如何保证每次抽取到不同的索引?其实只要考虑每次抽取一个数组索引的时候,每抽取一个,只要将这个值删除,使得数组缩短一个,删除值后将这个值后面的索引号分别向前移动一位。移动后重新定义数组使得数组索引缩短。
补充知识:
①Redim重新声明,只用这个关键词声明,意味着要清空原来数组。Redim preserve来重新声明后,就不要清空原来的值需要注意,在第一次声明数组时,必须记住不能定义数组长度,也就是说必须是一个动态数组。
②dibug.print函数,可以直接在控制台观测到数据的输出情况,方便调试程序。
二、案例:模拟双色球大乐透随机抽取不重复的数
小记:在我学习VB第12天时候,学了数组和随机数,当时通过时钟控件做了一个模拟大乐透随机选号小程序,但是没有解决选号重复的问题,今天学了抽取不重复随机数,利用抽取不重复随机数完美的解决了选号重复的问题。下面我们看看是怎么解决的吧。
①如图新建控件
②输入代码
Dim n() As Long
Dim na() As Long
Private Sub Command1_Click()
Text1.Text = ""
Call func
Dim i%
Dim k%
k = 0
For i = 0 To 4 Step 1
Randomize
Dim ri%
ri = Int(Rnd * (UBound(n) 1))
Text1.Text = Text1.Text & n(ri) & " "
Dim j%
For j = ri To UBound(n) - 1 Step 1
n(j) = n(j 1)
Next j
If UBound(n) > 0 Then ReDim Preserve n(UBound(n) - 1)
Next i
Text2.Text = ""
Call funca
Dim ia%
Dim ka%
ka = 0
For ia = 0 To 1 Step 1
Randomize
Dim ria%
ria = Int(Rnd * (UBound(na) 1))
Text2.Text = Text2.Text & n(ria) & " "
Dim ja%
For ja = ria To UBound(na) - 1 Step 1
na(ja) = na(ja 1)
Next ja
If UBound(na) > 0 Then ReDim Preserve na(UBound(na) - 1)
Next ia
End Sub
Function func()
Dim num As Long
num = 35
ReDim n(num - 1)
Dim i%
For i = 0 To num - 1 Step 1
n(i) = i 1
Next i
End Function
Function funca()
Dim numa As Long
numa = 12
ReDim na(numa - 1)
Dim ia%
For ia = 0 To numa - 1 Step 1
n(ia) = ia 1
Next ia
End Function
Function funcc()
Dim num As Long
num = 33
ReDim n(num - 1)
Dim i%
For i = 0 To num - 1 Step 1
n(i) = i 1
Next i
End Function
Private Sub Command2_Click()
Text3.Text = ""
Call funcc
Dim i%
Dim k%
k = 0
For i = 0 To 5 Step 1
Randomize
Dim ri%
ri = Int(Rnd * (UBound(n) 1))
Text3.Text = Text3.Text & n(ri) & " "
Dim j%
For j = ri To UBound(n) - 1 Step 1
n(j) = n(j 1)
Next j
If UBound(n) > 0 Then ReDim Preserve n(UBound(n) - 1)
Next i
Dim H%
Randomize
H = Rnd * 16
Text4.Text = H
End Sub
Private Sub Form_Load()
End Sub
③运行效果,详见视频,今天这个模拟器完美地解决了之前随机选号重复的问题,有需要的朋友请私信留下邮箱,免费送哦。
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com