- 帖子
- 835
- 主題
- 6
- 精華
- 0
- 積分
- 915
- 點名
- 0
- 作業系統
- Win 10,7
- 軟體版本
- 2019,2013,2003
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2010-5-3
- 最後登錄
- 2024-11-14
|
2#
發表於 2014-12-6 01:01
| 只看該作者
麻煩各位大大幫我解題(我還是初學者 T^T)
就是有1~20個數字,想隨機分組成4組
可請大大們提供您的撰寫方式 ...
tray1203 發表於 2014-12-4 12:30  - Sub nn()
- Dim iI%, iJ%, iMax%, iGet% ' 定義整數
- Dim sStr$ ' 字串
- Dim vA(), vT() ' 陣列
-
- Randomize (Rnd) ' 初始化亂數
- vA = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20) ' 宣告陣列包含每個數字 (1~20)
- ReDim vT(4, 0) ' 設定標的陣列的初始大小
- iMax = 20 ' 20 個數字
- Do While iMax > 0 ' Do 迴圈開始,當計數值大於0則繼續執行迴圈
- For iI = 0 To 4 ' For 迴圈開始,每組5個數字(0 ~ 4, 共4組)
- iGet = Int((iMax - iI - 1 + 1) * Rnd + 1) ' 抓取下個數字
- vT(iI, UBound(vT, 2)) = vA(iGet - 1) ' 存到標的陣列
- For iJ = iGet To iMax - iI - 1
- vA(iJ - 1) = vA(iJ) ' 將該數字之後的元素依序填補上來
- Next
- If UBound(vA) > 0 Then f ' If 條件式開始(若尚未到最後一個數字)
- ReDim Preserve vA(UBound(vA) - 1) ' 則陣列元素數量減 1
- Else ' 否則
- Erase vA ' 清除該陣列
- End If ' If 條件式結束
- Next ' For 迴圈結束
- If UBound(vT, 2) < 3 Then ReDim Preserve vT(4, UBound(vT, 2) + 1) ' 若尚未處理完成, 標的陣列新增存放下1組5 (0 ~ 4)個數字的空間
- iMax = iMax - 5 ' 計數值減去1組的數量 (5)
- Loop ' Do 迴圈結束
-
- sStr = "" ' 底下將各元素依序放入 sStr 變數內, 以便後續顯示隨機分組結果用
- For iMax = 0 To 3 ' 4組設字
- For iI = 0 To 4 ' 每組5個數字
- If sStr <> "" Then
- sStr = sStr & ", " & vT(iI, iMax) ' 非首次添加數字, 前面加上 , 做為數字的區隔
- Else
- sStr = vT(iI, iMax) ' 首次添加數字, 前面不加 ,
- End If
- Next
- sStr = sStr & Chr(10) ' 1組數字添加完成, 加上換行字元
- Next
- MsgBox sStr
- End Sub
複製代碼 |
|