2011-09-08 96 views
0

我需要開發一個模型使用蒙特卡洛協議,將隨機開始時間0100和2300.我試圖在Microsoft Access中創建此程序,將產生一個隨機開始時間以及一個隨機活動類型(Transit,Observe,Query)。活動類型不僅應該是隨機的,還應該加權(Transit = 0.25,Observe = 0.35,Query = 0.40)。我正在編寫程序,以便用戶可以按下命令按鈕以生成至少有30個隨機開始時間和活動類型(即1700 Transit,1500 Query等)的列表的報告。我知道如何在Access中創建一個隨機數字生成器,但我很困難,因爲我希望用戶能夠生成多個開始時間和活動類型。例如,我想問一個問題:「你會喜歡多少個開始時間?」和「你想要多少種活動類型?」在文本框中。如果我可以創建用戶朋友界面,我也願意在Excel中進行操作。任何幫助將不勝感激Microsoft Access VB隨機生成器

回答

0

Excel或Access ...它對應用程序開發無關緊要,無論如何它都是VBA。問題是:最終會爲最終用戶提供哪些服務:Excel或Access。我個人從來沒有考慮訪問的終端用戶工具本身(比如沒有開發的應用程序了。所以我清楚地寧願的Excel在這種情況下

所以戰略上,你想有一個對話窗口,

  1. 捕捉用戶輸入
  2. 產生一個或多個組隨機數
  3. 呈現結果給終端用戶

因此,在Excel或Access中,步驟1,2是完全相同的 - 打開表單編輯器,移動文本字段,選項按鈕和命令按鈕(對於Access不綁定到表),然後編寫代碼按鈕來創建輸出

1

你沒有指定你想要的輸出,但希望這段代碼能讓你開始創建隨機時間&加權活動的過程。您可以確定用戶界面。

Sub CreateRandom() 
    Dim intNumTimesNeeded As Integer 
    Dim y As Integer 
    Dim activity As String 
    Dim StartMinute As Integer 
    Dim FirstTime As Integer 
    Dim EndTime As Integer 
    Dim StartTime As Date 

    FirstTime = 1 * 60 ' first time is 1:00 am 
    EndTime = 23 * 60 ' last time is 11:00 pm 

    intNumTimesNeeded = 10 

    For x = 1 To intNumTimesNeeded 
     Randomize 
     y = Rnd() * 100 
     Select Case y 
      Case Is >= 60 
       activity = "Query" 
      Case Is > 25 
       activity = "Observe" 
      Case Else 
       activity = "Transit" 
     End Select 

     StartMinute = Int((EndTime - FirstTime + 1) * Rnd() + FirstTime) 

     StartTime = DateAdd("n", StartMinute, "01/01/1900") 

     Debug.Print Format(StartTime, "hh:mm") & " - " & activity 
    Next 

End Sub