分析雙色球冷熱號碼排序用的,但總是測驗失敗,求高手指點。代碼如下:
'==========================================================
' 冷 熱 排 序
'==========================================================
'說明:將每一期的前Pub_QS期號碼統計中獎次數(不包擴當期),然后按冷熱排序
'==========================================================
CpParam.Add "冷熱期數",20,"{10}{15}{20}{25}{30}{35}"'用戶設定引數
Function Main
'===============申明或定義變數=============
CpRowCount = CpData.RowCount '開獎期數
CpColCount = CpData.ColCount '開獎號碼個數
CpMaxCode = CpData.MaxCode '最大號碼
CpMinCode = CpData.MinCode '最小號碼
CpCodeCount = CpData.CodeCount '號碼數量
Pub_3Av = CpCodeCount / 3'三等分
Pub_QS = CInt(CpParam.Value("冷熱期數"))
'=================建表=================
CpAna.AddField "期號",8
CpAna.AddField "開獎號碼",20
For i = 1 to CpCodeCount
CpAna.AddField i,6
Next
CpAna.RowCount = CpRowCount+1
CpAna.CreateTable()
'==============演算法主體============================
ReDim sum(CpCodeCount)'在Pub_QS期內的開獎次數
ReDim SortCodes(CpCodeCount)'根據sum排序后的開獎號碼序列
ReDim Codes(CpColCount)'開獎資料
For row = 0 to CpRowCount
'期號 開獎號碼
If (row < CpRowCount) Then
CpAna.Cell(row, "期號") = CpData.Seq(row)
CpAna.Cell(row, "開獎號碼") = CpData.CodeStr(row)
For col = 0 to CpColCount-1
Codes(col) = CpData.Code(row,col)
Next
End If
'排序
Sort sum, SortCodes'根據開獎次數排序號碼,SortCodes為排序好的號碼序列
For i = 0 to CpCodeCount-1
CpAna.Cell(row, 2+i) = SortCodes(i)
cl = CpColor.Blue'不冷不熱
If (i+1 < Pub_3Av) Then
cl = CpColor.Green'冷
ElseIf i > CpCodeCount - Pub_3Av Then
cl = CpColor.Red'熱
End If
If (row < CpRowCount) Then
For col = 0 to CpColCount-1
If Codes(col) = SortCodes(i) Then'本期中獎號碼
cl = CpColor.Fuchsia'本期號碼
Exit For
End If
Next
End If
CpAna.Color(row,2+i) = cl
Next
If row >= Pub_QS Then
'減去前Pub_QS期的開獎次數
For col = 0 to CpColCount - 1
i = CpData.Code(row-Pub_QS, col)-CpMinCode
sum(i) = sum(i) - 1
Next
End If
For col = 0 to CpColCount - 1
i = Codes(col)-CpMinCode
sum(i) = sum(i) + 1
Next
Next
End Function
'==============輔助函式============================
'根據開獎次數排序號碼,Num為排序好的號碼序列
Function Sort(ByVal Sum(), ByRef Num())
CpMaxCode = CpData.MaxCode
CpMinCode = CpData.MinCode
CpCodeCount = CpData.CodeCount'號碼個數
ReDim aa(CpCodeCount)
For i = 0 to CpCodeCount-1
n = -1
Min = 99999
For j = 0 to CpCodeCount-1
If aa(j) <> -1 And Sum(j) < Min Then
Min = Sum(j)
n = j
End If
Next
Num(i) = CpMinCode+n
aa(n) = -1
Next
End Function
uj5u.com熱心網友回復:
哪兒出錯?或把整個工程上傳,讓大家下下來,調一下,當然不能給分哦
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/155933.html
標籤:VB基礎類
上一篇:求幫忙
