- 帖子
- 2848
- 主題
- 10
- 精華
- 0
- 積分
- 2903
- 點名
- 0
- 作業系統
- 〔略〕
- 軟體版本
- 〔略〕
- 閱讀權限
- 100
- 性別
- 男
- 來自
- 〔略〕
- 註冊時間
- 2013-5-13
- 最後登錄
- 2026-7-25
|
回復 26# Andy2483
以下是"思路"解析///
TC = Left(123456789, [k3]) '以跑道數取數字串...跑道有6--道次字串= 123456, 有8則= 12345678
For j = 1 To [k5] - 1: xD(j) = TC: Next '各組都預先置入道次字串
xD(j) = Left(TC, [k4] - ([k5] - 1) * [k3]) '最後一組...若只有4人...則置入 1234
V = Arr(i, 4): TV = xD(V) ' 取出各組的道次字串(它經過亂數取數後, 會有變化...字元數遞減)
For i = R - 1 To 1 Step -1 '反向迴圈...讓最後一組優先佔用1 ~ ? 跑道, 才不會有間隔
X = Val(Mid(TV, Int(Rnd * Len(TV)) + 1, 1)) '隨機從該組"道次字串"中取出一個數字
If xD(T & "/" & X) = 0 Then Exit Do '以[班級+道次]檢查, 等於0...表示該班級尚未佔用該跑道..合格..跳出//否則重新取數
xD(V) = Replace(TV, X, "") '此次取出的道次數字...須從道次字串中剔除...下次就不會有這個數字(字串每跑一次, 減少一個數)
xD(T & "/" & X) = 1 '[班級&道次]記數為1, 表示該班級已佔用了該跑道(下次排除用)
=========================== |
|