20、双色球的随机选择及统计各种奖项。由于好奇,做了一个随机选择号码的东西,发现这样随机选择中奖概率太小了,代码大致注释了一下,主要是给大家看看自定义函数的用处
n9hHnzP1.rar
(27.2 KB, 下载次数: 353)
Function Hrnd() '产生随机数代码,六个随机数字从1~33中取
Dim i%, s$, a(1 To 6)
Dim h As New Collection '利用集合来处理不重复值问题
On Error Resume Next '如果集合里出现重复值就会产生错误,故要用到错误处理
Do
i = Int(Rnd() * 33) + 1
h.Add i, CStr(i)
Loop Until h.Count = 6 '增加到集合里,一直到集合里的个数等于6个
Err.Clear
On Error GoTo 0 '清除错误处理,之后产生的错误还会捕捉到
For i = 1 To 6
a(i) = h(i)
Next '把集合里的数字赋值给数组
For i = 1 To 6
s = s & IIf(s = "", "", " ") & Format(Application.Small(a, i), "00") '对数组里的数字排序,并链接在一起
Next
Hrnd = s '给自定义函数赋值,最终结果类似为“03 07 09 16 20 30”
End Function
Function M_N_Jiang(s) '根据中奖个数,计算每一个对应的奖级别
Dim a
a = Split(arrj, ",") '取"一等奖,二等奖,三等奖,四等奖,五等奖,六等奖"为一个数组
Select Case s
Case "6+1"
M_N_Jiang = a(0) '6+1对应的是“一等奖”,其他类似
Case "6+0"
M_N_Jiang = a(1)
Case "5+1"
M_N_Jiang = a(2)
Case "4+1", "5+0"
M_N_Jiang = a(3)
Case "4+0", "3+1"
M_N_Jiang = a(4)
Case "2+1", "1+1", "0+1"
M_N_Jiang = a(5)
Case Else
M_N_Jiang = ""
End Select
End Function
|