Office: Rnd-Funktion mit gleichmäßiger Verteilung möglich?

Helfe beim Thema Rnd-Funktion mit gleichmäßiger Verteilung möglich? in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo Zusammen, Für meine wissenschaftliche Arbeit habe ich eine Datenbank mithilfe von Access erstellt. Diese enthält mehrere Angaben zu den... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Daniel90, 15. Mai 2014.

  1. Daniel90 Neuer User

    Rnd-Funktion mit gleichmäßiger Verteilung möglich?


    Hallo Zusammen,

    Für meine wissenschaftliche Arbeit habe ich eine Datenbank mithilfe von Access erstellt.
    Diese enthält mehrere Angaben zu den Probanden und deren Abschneiden im Experiment.
    Vor jedem Experiment soll jeder Proband zufällig in eine von 2 Gruppen verteilt werden.

    Ich möchte nun für jeden neuen Datenbankeintrag einen automatisch erstellten randomisierten Wert.
    Entweder 1 oder 2, für die jeweiligen Gruppen.

    Die dazu passende Funktion Int((2 * Rnd) + 1) habe ich schon herausgefunden und funktioniert auch.
    (Eingegeben als Standartwert in einer der Tabellen)

    Allerdings benötige ich für mein Experiment 2 Gleichgroße Gruppen a 50 Probanden. Ich müsste somit also irgendwie ein Maximum angeben. Ich habe zwar versucht das ganze über VBA Befehle zu lösen, anscheinend lässt sich per VBA allerdings kein Tabellenwert bearbeiten bzw. automatisch generieren?

    Ich bin weder geborener Programmierer, noch habe ich wirklich tiefgehende Kenntnisse in Microsoft Access, daher wäre ich über eure Hilfe sehr dankbar.

    PS: Gerade gelesen. Ich arbeite mit der aktuellen 2013er Version von Access.
     
    Zuletzt bearbeitet: 15. Mai 2014
    Daniel90, 15. Mai 2014
    #1
  2. Exl121150 Erfahrener User
    Hallo,
    das stimmt zum Glück nicht.

    Angenommen Du hast eine Tabelle namens "Probanden" angelegt mit folgenden Feldern:
    [table="width: 500, class: grid"]
    [tr]
    [td]Feldname[/td]
    [td]Feldtyp[/td]
    [td]Kommentar[/td]
    [/tr]
    [tr]
    [td]ID[/td]
    [td]Autowert[/td]
    [td]Automat.Satznummer[/td]
    [/tr]
    [tr]
    [td]Gruppe[/td]
    [td]Zahl (Byte)[/td]
    [td]Zufallszahl: 1 oder 2[/td]
    [/tr]
    [tr]
    [td]ProbBez[/td]
    [td]Text (30)[/td]
    [td]Probanden: Bezeichner+Nummer[/td]
    [/tr]
    [/table]

    Dann kannst Du in einem allgemeinem Codemodul folgendermaßen auf diese Tabelle "Probanden" zugreifen und 100 Datensätze anfügen (Code einfach mit Markieren/Strg+C bzw. Strg+V kopieren):

    Code:
    Option Compare Database
    Option Explicit
    
    Sub Erzeugen_Probanden()
      Dim DB As Database           'Datenbank
      Dim rcProb As DAO.Recordset  'Datensätze einer Tabelle
      Dim I As Integer
      
      'In DB wird der Zeiger auf die aktuelle Datenbank gespeichert,
      'wozu die Funktion "CurrentDb" eingesetzt um die aktuelle Datenbank zu ermitteln.
      Set DB = CurrentDb
      
      'Die Tabelle "Probanden" wird für Schreib/Lese-Zugriff geöffnet,
      'sodass mit dem Zeiger "rcProb" auf die einzelnen Datensätze dieser Tabelle zugegriffen werden kann:
      Set rcProb = DB.OpenRecordset("Probanden")
    
      'Eine For-Next-Schleife wird gestartet, um 100 Datensätze anzufügen an die Tabelle "Probanden":
      For I = 1 To 100
    
        'Die "rcProb.AddNew"-Methode bewirkt, dass ein neuer Datensatz erzeugt wird,
        'während die "rcProb.Edit"-Methode einen bestehenden Datensatz bearbeitbar machen würde
        rcProb.AddNew
    
        'Der Datensatz wird mittels "RND"-Funktion einer von zwei Gruppen zugewiesen
        rcProb!Gruppe = Int(2 * Rnd() + 1)
    
        'Im Bezeichnerfeld wird ein durchnummerierter Bezeichner zugewiesen (nur als Beispiel gedacht).
        rcProb!ProbBez = "Proband " & I
    
        'Hier müssten dann noch weitere Zuweisungen folgen, falls noch weitere Felder existieren.
        '...
        'Ganz wichtig ist zum Abschluss der Aufruf von "rcProb.Update",
        'damit der Datensatz tatsächlich an die Tabelle angefügt wird -
        'ohne diesen Aufruf würde er einfach wieder vergessen!
        rcProb.Update
    
      Next I
    
      'Zum korrekten Abschluss muss der Zugriff auf die Tabelle(nsätze) wieder geschlossen werden.
      rcProb.Close
      
      'Wenn die Tabelle vorher keinen Datensatz enthielt, so besitzt sie jetzt 100 Datensätze.
    End Sub
    
    Obiger VBA-Code ist nur als Beispiel gedacht, Du musst das Ganze an Deine Verhältnisse anpassen.

    Anmerkung:
    Ob nun mit dem obigen Code genau 50 Sätze mit einem Einser bzw. einem Zweier im Feld "Gruppe" erzeugt werden, das kann natürlich aufgrund der (Pseudo)Zufälligkeit der RND-Funktion nicht garantiert werden.
     
    Zuletzt bearbeitet: 16. Mai 2014
    Exl121150, 16. Mai 2014
    #2
  3. Daniel90 Neuer User
    Hallo Exl121150,
    vielen Dank für deine Hilfe.
    Dein Code gab für mich den hilfreichen Denkanstoß den ich für mein Vorhaben gebraucht hatte.
    Allerdings habe ich das ganze nun etwas anders gelöst.
    Da ich wirklich eine genaue Aufteilung auf 2 Gruppen a 50 Probanden benötigte habe ich folgenden Code verwendet:

    Code:
    Option Compare Database
    'Schreibe Wert
    Private Sub FrmUnterStatus_Exit(Cancel As Integer)
        Dim DB As Database
        Dim rcProb As DAO.Recordset
            Set rcProb = CurrentDb.OpenRecordset("SELECT * FROM tblStatus WHERE StatusID = (SELECT MAX(StatusID) FROM tblStatus)", dbOpenDynaset)
            With rcProb
                .Edit
                .Fields("ZuordnungGruppe").Value = RandomGruppe()
                .Update
            End With
    End Sub
    'BerechnungZuordnungGruppe1
    Public Function ZaehleZuordnungGruppe() As Integer
        Debug.Print DCount("*", "tblStatus", "ZuordnungGruppe=1")
        ZaehleZuordnungGruppe = DCount("*", "tblStatus", "ZuordnungGruppe=1")
    End Function
    'Berechnung
    Public Function RandomGruppe() As Integer
        If (ZaehleZuordnungGruppe() < 50) Then RandomGruppe = Int((2 - 1 + 1) * Rnd + 1)
        If (ZaehleZuordnungGruppe() >= 50) Then RandomGruppe = 2
    End Function
    
    Es wird somit eine Zufälliger Wert zwischen 1 und 2 generiert bis Gruppe 1 mit 50 Probanden gefüllt ist, sobald dieser Fall eintritt wird Gruppe 2 mit den restlichen Probanden aufgefüllt. Natürlich ist das nicht mehr 100% zufällig im eigentlichen Sinne für meine Zwecke allerdings zweckdienlich.

    Vielen Dank aber auf jeden Fall für deine Hilfe!
     
    Daniel90, 19. Mai 2014
    #3
Thema:

Rnd-Funktion mit gleichmäßiger Verteilung möglich?

Die Seite wird geladen...
  1. Rnd-Funktion mit gleichmäßiger Verteilung möglich? - Similar Threads - Rnd Funktion gleichmäßiger

  2. Probleme mit bedingter Formatierung

    in Microsoft Excel Hilfe
    Probleme mit bedingter Formatierung: Hallo ihr Lieben, folgende Herausforderung: Ich möchte die Formatierung des Wertes in B7 (bzw. auch alle weiteren Werte in Spalte B) nach folgenden Bedingungen anpassen: 1. WENN C7<0,05 DANN...
  3. neue Filter Funktion

    in Microsoft Excel Hilfe
    neue Filter Funktion: Hallo zusammen, wieder habe ich für meine Nebenkostenabrechnung (privat) ein paar Änderungen gemacht. Soweit so gut Nun habe ich , für mich, die neue Filter Funktion entdeckt. Wow ist richtig...
  4. Zahlenreihe addieren

    in Microsoft Excel Hilfe
    Zahlenreihe addieren: Hallo, ich habe folgende Zahlenreihe: -5; -9; -11; 35; -2; -4; -8; 33; -3; -6; -9 Jetzt würde ich gerne mit einer Funktion nur die Zahlen von rechts nach links, ab dem letzten Eintrag -9,...
  5. DropDown Auswahl mit 2 Funktionen

    in Microsoft Excel Hilfe
    DropDown Auswahl mit 2 Funktionen: Liebes Forum-Team, ich habe eine Tabelle mit Kundendaten, die von mehreren Mitarbeitern befüllt wird. Ich möchte, dass der Mitarbeiter seinen Namen im DropDown Auswahl auswählt, Aber im...
  6. ISOKalenderwoche Powerquery

    in Microsoft Excel Hilfe
    ISOKalenderwoche Powerquery: Hallo Ich möchte in einer Powerquery Abfrage in einer benutzerdefinierten Spalte die Kalenderwoche errechnen, nur schaffe ich das leider so überhaupt nicht. Als normale Excelformel kein Problem...
  7. Bei meinem Outlook (new) fehlen wichtige Funktionen!

    in Microsoft Outlook Hilfe
    Bei meinem Outlook (new) fehlen wichtige Funktionen!: Hallo, wie der Titel bereits andeutet, habe ich Probleme mit Outlook. Zum Beispiel ist es mir nicht möglich, Add-ins zu installieren. Es gibt keinen Button dafür, und auch wenn ich über die...
  8. Rnd-Funktion (ZZG)

    in Microsoft Access Tutorials
    Rnd-Funktion (ZZG): Rnd-Funktion (ZZG) Access für Microsoft 365 Access 2019 Access 2016 Access 2013 Access 2010 Access 2007 Mehr... Weniger...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden