哪位高手能幫小弟一個忙啊
就是隨機從多個(個數沒有固定)數字中取4個數字組成資料組
這資料組的個數是固定的,而且該組成的資料組可以滿足包含多個指定的條件
條件如下:1.(資料組 1/2/3/4判斷是否包含條件2/5的其中一個資料即為滿足條件(滿足)
2.(資料組 1/2/3/4判斷是否包含條件5/6的其中一個資料即為滿足條件(不滿足)
~
把所有能所有滿足條件的組合保存在電腦上
這樣的源程式能寫嗎 ?
程式要求越高效越好
謝謝!
uj5u.com熱心網友回復:
什么樣的資料和條件請先說清楚.........uj5u.com熱心網友回復:
僅數字 個數不固定而需要組成的資料組由4個數字組成而且4個數字中可以重復
滿足的條件是
例如
資料組為 01 02 03 04
條件1為 01 05 (由于資料組包含01,所以滿足條件)即滿足包含其中1個數字就滿足條件
條件2為 05 06 (由于資料組不包含05 06,所以不滿足條件)
條件也是有多位數字組成而且組成條件的數字的個數也是不固定,條件的總數也是不固定
計算出的資料組需要滿足所有條件
uj5u.com熱心網友回復:
用Rnd陳述句,加上回圈uj5u.com熱心網友回復:
哪位高手能幫小弟一個忙啊多個不連貫的數字 (數字和個數不固定)中隨機提取4個數字組成資料組(固定由4個數字組成)而且資料組中的4個數字中可以重復
而且組成的資料組需要滿足多個條件(條件數和條件不固定)(但條件模式固定)
條件模式如下:
資料組為 01 03 04 04
條件1為 01 04 (由于資料組包含01,所以滿足條件)即滿足包含其中1個數字就滿足條件
條件2為 05 06 (由于資料組不包含05 06,所以不滿足條件)
條件也是有多位數字組成而且組成條件的數字的個數也是不固定,條件的總數也是不固定
計算出的資料組需要滿足所有條件
把所有能所有滿足條件的組合保存在電腦上的程式能寫嗎 ?
程式要求越高效越好 需要詳細的源程式代碼或直接撰寫成程式
謝謝!
uj5u.com熱心網友回復:
參考著改吧:Sub Test1()
''從0~9中隨機取出4個數字
''參考Microsof Scripting Runtime
Dim i As Integer, s1 As String, t1 As String
Dim j As Integer, Tj() As String, sDic As New Dictionary
Tj = Split("01 05;05 06;07 08", ";") ''得到條件陣列,所有的條件用;分割
100:
sDic.RemoveAll
s1 = "" ''清空字串
For i = 1 To 4 ''回圈4次取4個數
t1 = "0" & Int(Rnd * 10) ''得到一個隨機的數字,格式0#
For j = 0 To UBound(Tj)
If InStr(1, Tj(j), t1, vbTextCompare) > 0 Then sDic(CStr(j)) = "ok"
Next
s1 = s1 & IIf(s1 <> "", " ", "") & t1
Next
''判斷當前獲取的字串是否滿足所有的條件
For i = 0 To UBound(Tj)
If Not sDic.Exists(CStr(i)) Then GoTo 100 ''重新獲取
Next
Debug.Print s1 ''輸出合格的字串
End Sub
...
uj5u.com熱心網友回復:
改成一個函式,然后呼叫時參考下面代碼:
Sub test()
''呼叫時這樣
Debug.Print GetRndStr("05 06;07 01 02;03 05")
End Sub
Function GetRndStr(ByVal bTJ As String)
''從0~100中隨機取出4個數字
''bTJ--為輸入的條件,多個條件之間用;分割
''參考Microsof Scripting Runtime
If Len(bTJ) = 0 Then Exit Function
Dim i As Integer, s1 As String, t1 As String
Dim j As Integer, Tj() As String, sDic As New Dictionary
Tj = Split(bTJ, ";") ''得到條件陣列,所有的條件用;分割
100:
sDic.RemoveAll
s1 = "" ''清空字串
For i = 1 To 4 ''回圈4次取4個數
t1 = Format$(Int(Rnd * 101), "00") ''得到一個隨機的數字,格式0#
For j = 0 To UBound(Tj)
If InStr(1, Tj(j), t1, vbTextCompare) > 0 Then sDic(CStr(j)) = "ok"
Next
s1 = s1 & IIf(s1 <> "", " ", "") & t1
Next
''判斷當前獲取的字串是否滿足所有的條件
For i = 0 To UBound(Tj)
If Not sDic.Exists(CStr(i)) Then GoTo 100 ''重新獲取
Next
GetRndStr = s1 ''回傳合格的字串
End Function
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/110915.html
標籤:網絡編程
上一篇:哪位好心人幫我改下我的vb程式
下一篇:oracle連接查詢無結果
