vb计算结果不精确怎么解决(随机不重复的值)

完美解决双色球大乐透模拟选号软件选号重复问题,有需要的朋友请私信哦。

今天学习了刘金玉老师零基础VB教程的第54期,学习的主要内容是随机抽取不重复的值。

一、随机抽取不重复的值思路

第一步:假设有个数组n(9)有十个数,分别存放在n(0)至n(9)中2、要从n数组中随机抽取一个数,存放到数组m中。

第二步:从n中每次随机抽取一个,重复抽取10次,抽完,每次抽取到的值,都是不同的。从n数组中抽取不同的值的时候,只要保证每次抽取到不同的索引值即可

第三步:如何保证每次抽取到不同的索引?其实只要考虑每次抽取一个数组索引的时候,每抽取一个,只要将这个值删除,使得数组缩短一个,删除值后将这个值后面的索引号分别向前移动一位。移动后重新定义数组使得数组索引缩短。

补充知识:

①Redim重新声明,只用这个关键词声明,意味着要清空原来数组。Redim preserve来重新声明后,就不要清空原来的值需要注意,在第一次声明数组时,必须记住不能定义数组长度,也就是说必须是一个动态数组。

②dibug.print函数,可以直接在控制台观测到数据的输出情况,方便调试程序。

二、案例:模拟双色球大乐透随机抽取不重复的数

小记:在我学习VB第12天时候,学了数组和随机数,当时通过时钟控件做了一个模拟大乐透随机选号小程序,但是没有解决选号重复的问题,今天学了抽取不重复随机数,利用抽取不重复随机数完美的解决了选号重复的问题。下面我们看看是怎么解决的吧。

①如图新建控件

vb计算结果不精确怎么解决(随机不重复的值)(1)

②输入代码

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

vb计算结果不精确怎么解决(随机不重复的值)(2)

vb计算结果不精确怎么解决(随机不重复的值)(3)

③运行效果,详见视频,今天这个模拟器完美地解决了之前随机选号重复的问题,有需要的朋友请私信留下邮箱,免费送哦。

vb计算结果不精确怎么解决(随机不重复的值)(4)

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页