Генератор случайных чисел Microsoft Access VB - PullRequest
0 голосов
/ 08 сентября 2011

Мне нужно разработать модель с использованием протокола Монте-Карло, который будет рандомизировать время запуска между 0100 и 2300. Я пытаюсь создать эту программу в Microsoft Access, которая будет производить случайное время начала, а также случайный тип деятельности (Транзит Соблюдайте, Запрашивайте). Вид деятельности должен быть не только случайным, но и взвешенным (Транзит = 0,25, Наблюдение = 0,35, Запрос = 0,40). Я пытаюсь написать программу, чтобы пользователи могли нажимать командную кнопку, чтобы создать отчет со списком не менее чем из 30 случайных моментов запуска и типов действий (например, 1700 Transit, 1500 Query и т. Д.). Я понимаю, как создать генератор случайных чисел в Access, но я изо всех сил стараюсь, чтобы пользователь мог генерировать более одного времени начала и типа активности. Так, например, я хочу задать вопрос "Сколько раз вы хотели бы начать?" и "Сколько видов деятельности вы бы хотели?" в текстовых полях. Я также хотел бы сделать в Excel, если бы я мог создать интерфейс пользователя. Любая помощь будет принята с благодарностью

Ответы [ 2 ]

1 голос
/ 08 сентября 2011

Вы не указали, как вы хотели получить вывод, но, надеюсь, этот код поможет вам начать процесс создания случайных времен и взвешенных действий.Вы можете определить пользовательский интерфейс.

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
0 голосов
/ 08 сентября 2011

Excel или Access ... это не имеет значения для разработки приложений, это VBA в любом случае.Вопрос в том, что лучше послужит конечному пользователю: Excel или Access.Лично я никогда не рассматривал доступ к инструменту для конечного пользователя как таковому (скажем, без разработки приложения; поэтому я бы явно предпочел Excel в этом случае.

Итак, стратегически, вам нужно диалоговое окно, которое

  1. захватывает ввод пользователя
  2. создает один или несколько наборов случайных чисел
  3. представляет результат конечному пользователю

Итак, всеExcel или Access, шаги 1, 2 абсолютно одинаковы - откройте редактор форм, переместите текстовые поля, кнопки выбора и командные кнопки в (для Access не привязывайте его к таблице) и напишите код для кнопки ОК, чтобы создатьвыход

...