Übersetzungen dieser Seite:
 

Dies ist eine alte Version des Dokuments!


Inhaltsverzeichnis

random_p()

int random_p(array Verteilung)

Returns a number from the distribution. In doing so, each number can be assigned an individual probability.

Gibt eine Zahl aus der Verteilung zurück. Jeder Zahl kann dabei eine individuelle Wahrscheinlichkeit zugeordnet werden.

  • Verteilung
    An array which specifies the possible numbers as keys, and their probabilities as values. Therefore, each number is assigned a probability (number => probability). The probability can be specified as a percentage (e.g. 0.25), or as a relative proportion (e.g. 20).
  • Verteilung
    Ein Array, welches die möglichen Zahlen als Schlüssel und deren Wahrscheinlichkeit als Wert angibt. Es wird also jeder Zahl eine Wahrscheinlichkeit zugeordnet (Zahl => Wahrscheinlichkeit). Die Wahrscheinlichkeit kann als Anteil (z.B. 0.25) oder als relativer Anteil (z.B. 20) angegeben werden.

Note: The distribution of the drawn values only converges once there have been many draws (n > 1000) of the distribution specified. If you are working with a lower number of cases, use a randomization with urns, and enter some numbers more frequently in the urn, if these should be drawn more frequently.

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.

Note: Use the function put(), to save the drawn value in the data record. Wichtig: Verwenden Sie die Funktion put()'', um den gezogenen Wert im Datensatz zu speichern.

Example 1

In the first example, a number between 1 and 4 is drawn. Numbers 1 and 3 each have a 20% chance of being drawn, number 2 has a 50% chance, and number 4 has a 10% chance. All three random numbers in the first example have the same random distribution.

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 Define distribution
$verteilung = array(
  1 => 20,
  2 => 50,
  3 => 20,
  4 => 10
);
// Zahl zwischen 1 und 4 würfeln Draw number between 1 and 4
$zahl = random_p($verteilung);
// Ergebnis der Zufallsziehung in Variable IV01_01 speichern Save the result of the random draw
put('IV01_01', $zahl);
// Entsprechenden Stimulus anzeigen Show corresponding stimulus
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
));

Beispiel 2

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);
de/create/functions/random_p.1421093737.txt.gz · Zuletzt geändert: 12.01.2015 21:15 von alexander.ritter
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC Attribution-Share Alike 4.0 International
Driven by DokuWiki