Microsoft Access VB随机生成器

时间:2011-09-08 14:12:01

标签: ms-access vba excel-vba ms-access-2007 excel

我需要使用蒙特卡罗协议开发一个模型,该协议将随机化开始时间在0100和2300之间。我正在尝试在Microsoft Access中创建此程序,该程序将生成随机化的开始时间以及随机化的活动类型(Transit ,观察,查询)。活动类型不仅应该是随机的,还应该是加权的(Transit = 0.25,Observe = 0.35,Query = 0.40)。我正在尝试编写程序,以便用户可以按下命令按钮以生成包含至少30个随机开始时间和活动类型列表的报告(即1700 Transit,1500 Query等)。我理解如何在Access中创建一个随机数生成器,但我很挣扎,因为我希望用户能够生成多个启动时间和活动类型。例如,我想问一个问题“你想要多少个开始时间?”和“你想要几种活动类型?”在文本框中。如果我可以创建一个用户友好界面,我也愿意在Excel中做。非常感谢任何帮助

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

Excel或Access ...对于应用程序开发来说并不重要,无论如何都是VBA。问题是:什么能更好地为最终用户服务:Excel或Access。我个人从未考虑过访问最终用户工具本身(比如说没有开发应用程序;所以在这种情况下我显然更喜欢Excel。

所以从策略上讲,你想要一个

的对话窗口
  1. 捕获用户输入
  2. 生成一组或多组随机数
  3. 将结果呈现给最终用户
  4. 所以Excel或Access,步骤1,2完全相同 - 打开表单编辑器,移动文本字段,选项按钮和命令按钮(对于Access不要将它绑定到表),并编写代码单击确定按钮以创建输出