Microsoft Access VB 随机生成器

Posted

技术标签:

【中文标题】Microsoft Access VB 随机生成器【英文标题】:Microsoft Access VB Random Generator 【发布时间】:2011-09-08 14:12:00 【问题描述】:

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

【问题讨论】:

【参考方案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

【讨论】:

【参考方案2】:

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

所以从战略上讲,你需要一个对话窗口

    捕获用户输入 产生一组或多组随机数 将结果呈现给最终用户

所以无论是 Excel 还是 Access,步骤 1、2 完全相同——打开表单编辑器,将文本字段、选项按钮和命令按钮移入(对于 Access,不要将其绑定到表格),然后编写代码OK 按钮创建输出

【讨论】:

以上是关于Microsoft Access VB 随机生成器的主要内容,如果未能解决你的问题,请参考以下文章

VB6/Microsoft Access/DAO 到 VB.NET/SQL Server... 有建议吗?

VB.NET 与 Microsoft Access 交谈 - 可以进行回调吗?

如何在 VB6 窗体中使用 Microsoft Office Access 的子窗体控件?

将 VB.NET 代码从 Visual Studio Express 复制到 Microsoft Access 2013

在 Microsoft Access 2013 中的数据表子窗体上单击一行时运行 VB

vb编写学生基本信息实现access数据库的增删改查