====== random_p() ======

''int **random_p**(array //Verteilung//)''

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

  * //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.

**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 [[
:de:create:random_urns|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 ''[[:de:create:functions:put|put()]]'', um den gezogenen Wert im Datensatz zu speichern.


===== Beispiel 1 =====

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.

<code php>
// 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');
}
</code>

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.

<code php>
// Wahrscheinlichkeiten als Fließkommazahlen
$verteilung = array(1=>0.2, 2=>0.5, 3=>0.2, 4=>0.1);
</code>

Die Wahrscheinlichkeiten müssen sich __nicht__ zu 1 oder 100 addieren.

<code php>
// Wahrscheinlichkeiten als Verhältnis
$verteilung = array(1=>4, 2=>10, 3=>4, 4=>2);
</code>

Und natürlich muss die Verteilung __nicht__ separat in eine Variable gespeichert werden.

<code php>
// Zahl zwischen 1 und 4 würfeln
$zahl = random_p(array(
  1 => 2,
  2 => 5,
  3 => 2,
  4 => 1
));
</code>


===== 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.

<code php>
// 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);
</code>