最近在寫VBA程式 有各地方寫不出來 想請大家想一下
在執行程式之前 會請使用者輸入Demand值 而這各值為正整數 不設上限
輸入之後 會跑1~100次的數據模擬 我寫不出來的地方是:
我希望 這各Demand值在這各100次之中以亂數呈現 但是在第100次的時候 也就是最後一次時 是當時使用者輸入的Demand值 而在這100次之間的數據 是希望呈現出遞增的狀況 但是數具之間是以不成比例的增加
當然跑出來的數據也都是正整數 聽的懂我再說啥嗎 哈哈 請大家幫忙想一下 狀況如下:
當使用者輸入Demand值-->500
Demand
1 20
2 25
3 37
4 60
5 100
6 120
7 135
8 140
. .
. .
. .
100 500
Y軸:模擬次數1~100次
X軸:Demand要變化且遞增的數據 最後一筆資料要為使用者輸入的值
麻煩大家了 謝謝
簡單點講 就是希望 這99筆資料為隨機化的出現 第一筆資料要比第二筆大
第三筆資料要比第二筆大 以此類推 但是99筆出現的隨機數字 不可以大過於當時使用者輸入的值 而最後的第100筆資料 可以利用"指定"的方式來解決 因此1~99筆要如何產生上述所的條件呢??
2006-10-14 12:08:37 · 1 個解答 · 發問者 帥氣小辜 1 in 電腦與網際網路 ➔ 程式設計
Private Sub Command0_Click() Dim D As Integer, I As Integer, J As Integer, S As Integer, M As Integer Do D = Int(Val(InputBox("請輸入Demand值(Demand>=100)", , 500))) Loop Until D > 99 M = 1 '假設最小值為1,若最小值為0的話把此行刪除 ReDim A(M To 98 + M) As Integer, B(M To D) As Boolean '隨機產生99個M~D-1(1~499)之間不重複的值 Randomize For I = M To 98 + M Do J = Int(Rnd * (D - M) + M) Loop While B(J) A(I) = J: B(J) = True Next '由小至大排序 For I = LBound(A) To UBound(A) - 1 For J = I To UBound(A) If A(I) > A(J) Then S = A(I): A(I) = A(J): A(J) = S End If Next Next '輸出 J = 1 Open "C:\Test.txt" For Output As #1 For I = LBound(A) To UBound(A) Print #1, J, A(I) J = J + 1 Next Print #1, J, D Close #1 MsgBox "已輸出至""C:\Test.txt"""End Sub
2006-10-17 09:16:05 · answer #1 · answered by W.J.S. 7 · 0⤊ 0⤋