2011-09-08 11 views
0

Je dois développer un modèle en utilisant un protocole de Monte Carlo qui va randomiser les temps de démarrage entre 0100 et 2300. J'essaie de créer ce programme dans Microsoft Access qui produira un temps de démarrage aléatoire ainsi qu'un type d'activité randomisée (Transit, Observe, Query). Le type d'activité doit non seulement être aléatoire mais également pondéré (Transit = 0.25, Observe = 0.35, Query = 0.40). J'essaie d'écrire le programme afin que les utilisateurs puissent appuyer sur un bouton de commande pour produire un rapport avec une liste d'au moins 30 heures de début et types d'activité aléatoires (c'est-à-dire 1700 Transit, 1500 Query, etc.). Je comprends comment créer un générateur de nombres aléatoires dans Access mais j'ai du mal à ce que je souhaite que l'utilisateur puisse générer plus d'un heure de début et d'un type d'activité. Donc, par exemple, je veux poser la question "Combien de temps de départ aimeriez-vous?" et "Combien de types d'activités aimeriez-vous?" dans les zones de texte. Je serais également disposé à faire dans Excel si je pourrais créer une interface d'ami d'utilisateur. Toute aide serait grandement appréciéeGénérateur aléatoire Microsoft Access VB

Répondre

0

Excel ou Access ... cela n'a pas vraiment d'importance pour le développement de l'application, c'est VBA dans tous les cas. La question est: qu'est-ce qui servira mieux l'utilisateur final: Excel ou Access. Personnellement, j'ai jamais considéré l'accès d'un utilisateur final outil en tant que tel (par exemple sans développer une applicaiton;. Donc je clairement préférer Excel dans ce cas

Sur le plan stratégique, vous voulez une fenêtre de dialogue qui

  1. capture d'entrée d'utilisateur
  2. produit un ou plusieurs ensemble de nombres aléatoires
  3. présente le résultat à l'utilisateur final

Alors qu'Excel ou Access, étapes 1, 2 sont exactement les mêmes - ouvrez l'éditeur de formulaire, déplacez les champs de texte, les boutons d'option et les boutons de commande (pour Access ne le liez pas à une table), et écrivez le code bouton pour créer la sortie

1

Vous n'avez pas spécifié comment vous vouliez la sortie, mais nous espérons que ce code vous permettra de démarrer le processus de création de temps aléatoires & activités pondérées. Vous pouvez déterminer l'interface utilisateur.

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