English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

最近在寫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 電腦與網際網路 程式設計

1 個解答

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

fedest.com, questions and answers