int random_p(array Verteilung)
Gibt eine Zahl aus der Verteilung zurück. Jeder Zahl kann dabei eine individuelle Wahrscheinlichkeit zugeordnet werden.
=>
Wahrscheinlichkeit). Die Wahrscheinlichkeit kann als Anteil (z.B. 0.25
) oder als relativer Anteil (z.B. 20
) angegeben werden.Wichtig: Die Verteilung der gezogenen Werte nähert sich erst bei vielen Ziehungen (N > 1000) der angegeben Verteilung an. Falls Sie mit geringeren Fallzahlen arbeiten, verwenden Sie eine Randomisierung mit Urnen und tragen Sie manche Zahlen ggf. häufiger in der Urne ein, wenn diese häufiger gezogen werden sollen.
Wichtig: Verwenden Sie die Funktion put()
, um den gezogenen Wert im Datensatz zu speichern.
Im ersten Beispiel wird eine Zahl zwischen 1 und 4 gewürfelt. Die 1 und 3 haben dabei eine Chance von je 20 %, die 2 eine Chance von 50 % und die 4 eine Chance von 10 %. Alle drei Zufallszahlen im ersten Beispiel haben die selbe Zufallsverteilung.
// Verteilung definieren $verteilung = array( 1 => 20, 2 => 50, 3 => 20, 4 => 10 ); // Zahl zwischen 1 und 4 würfeln $zahl = random_p($verteilung); // Ergebnis der Zufallsziehung in Variable IV01_01 speichern put('IV01_01', $zahl); // Entsprechenden Stimulus anzeigen if ($zahl == 1) { text('stimulusA'); } elseif ($zahl == 2) { text('stimulusB'); } elseif ($zahl == 3) { text('stimulusC'); } else { text('stimulusD'); }
Die Wahrscheinlichkeiten können auch als Fließkommazahlen (mit Punkt als Dezimaltrenner) angegeben werden. Außerdem können die Zahlen auch direkt hintereinander geschrieben werden.
// Wahrscheinlichkeiten als Fließkommazahlen $verteilung = array(1=>0.2, 2=>0.5, 3=>0.2, 4=>0.1);
Die Wahrscheinlichkeiten müssen sich nicht zu 1 oder 100 addieren.
// Wahrscheinlichkeiten als Verhältnis $verteilung = array(1=>4, 2=>10, 3=>4, 4=>2);
Und natürlich muss die Verteilung nicht separat in eine Variable gespeichert werden.
// Zahl zwischen 1 und 4 würfeln $zahl = random_p(array( 1 => 2, 2 => 5, 3 => 2, 4 => 1 ));
Das zweite Beispiel demonstriert, wie eine Zufallsauswahl abhängig von den Antworten des Benutzers getroffen werden kann.
Das Beispiel geht davon aus, dass in Frage „PS19“ die Nutzungshäufigkeit für 7 Fernsehsender abgefragt wurde zwischen 1 (nie), 2 (selten), 3 (häufig) und 4 (fast täglich).
Nun soll aus den Sendern, die mindestens selten genutzt werden, zufällig einer ausgewählt werden. Allerdings sollten die Sender 2, 5 und 6 dabei bevorzugt werden.
// Eine Liste anlegen, in der alle genutzten Sender auftauchen $genutzt = getItems('PS19', 'min', 2); // Wenn kein Sender genutzt wurde, ist die Befragung zu Ende if (count($genutzt) < 1) { goToPage('end'); } // Wahrscheinlichkeiten für die verschiedenen Sender definieren $pAlle = array( 1 => 10, 2 => 20, 3 => 10, 4 => 10, 5 => 20, 6 => 30, 7 => 10 ); // Nun muss eine Verteilung für die genutzten Sender erstellt werden $pGenutzt = array(); foreach ($genutzt as $sender) { $pGenutzt[$sender] = $pAlle[$sender]; } // Gewichtete Zufallsauswahl aus den genutzten Sendern $fokus = random_p($pGenutzt); // Abspeichern des Untersuchungsgegenstands put('PS20_01', $fokus);