Difference between revisions of "Aufgaben:Exercise 2.7: C Programs "z1" and "z2""
m (Textersetzung - „*Sollte die Eingabe des Zahlenwertes „0” erforderlich sein, so geben Sie bitte „0.” ein.“ durch „ “) |
|||
Line 3: | Line 3: | ||
}} | }} | ||
− | [[File:P_ID122__Sto_A_2_7.png|right|C-Programme zur Erzeugung diskreter Zufallsgrößen]] | + | [[File:P_ID122__Sto_A_2_7.png|right|frame|C-Programme zur Erzeugung diskreter Zufallsgrößen]] |
Die beiden hier angegebenen C-Programme eignen sich zur Erzeugung diskreter Zufallsgrößen: | Die beiden hier angegebenen C-Programme eignen sich zur Erzeugung diskreter Zufallsgrößen: | ||
− | * Die Funktion | + | * Die Funktion $z1$ erzeugt eine $M$–-stufige Zufallsgröße mit dem Wertevorrat $\{0, 1$, ... , $M-1\}$, die dazugehörigen Wahrscheinlichkeiten werden im Array $\text{p_array}$ mit der Eigenschaft „Float” übergeben. Die Funktion $\text{random</i>()}$ liefert gleichverteilte Float–Zufallsgrößen zwischen $0$ und $1$. |
− | *Eine zweite Funktion | + | |
+ | *Eine zweite Funktion $z2$ (Quelltext siehe unten) liefert eine spezielle Wahrscheinlichkeitsverteilung, die durch die beiden Parameter $I$ und $p$ festgelegt ist. Dieses geschieht unter Verwendung der Funktion <i>z</i>1. | ||
+ | |||
+ | |||
+ | |||
''Hinweise:'' | ''Hinweise:'' | ||
Line 13: | Line 17: | ||
*Insbesondere wird auf die Seite [[Stochastische_Signaltheorie/Erzeugung_von_diskreten_Zufallsgrößen#Erzeugung_mehrstufiger_Zufallsgr.C3.B6.C3.9Fen|Erzeugung mehrstufiger Zufallsgrößen]] Bezug genommen. | *Insbesondere wird auf die Seite [[Stochastische_Signaltheorie/Erzeugung_von_diskreten_Zufallsgrößen#Erzeugung_mehrstufiger_Zufallsgr.C3.B6.C3.9Fen|Erzeugung mehrstufiger Zufallsgrößen]] Bezug genommen. | ||
+ | |||
Line 18: | Line 23: | ||
<quiz display=simple> | <quiz display=simple> | ||
− | {Es gelte $M=4$ und $p\_array = \ | + | {Es gelte $M=4$ und $p\_array = \big[0.2, \ 0.3, \ 0.4, \ 0.1 \big]$. |
+ | <br>Welches Ergebnis liefert die Funktion $z1$, wenn die Randomfunktion den Wert $x = 0.75$ zurückgibt? | ||
|type="{}"} | |type="{}"} | ||
− | $z1 \ =$ { 2 } | + | $z1 \ = \ $ { 2 } |
− | |||
{Welche der nachfolgenden Aussagen sind bezüglich $z1$ zutreffend? | {Welche der nachfolgenden Aussagen sind bezüglich $z1$ zutreffend? | ||
|type="[]"} | |type="[]"} | ||
− | - Man könnte auf die Zuweisung | + | - Man könnte auf die Zuweisung $\text{x = random()}$ in Zeile 5 verzichten und in Zeile 8 direkt mit $\text{random()}$ vergleichen. |
− | + Sind alle übergebenen Wahrscheinlichkeiten gleich, so gäbe es | + | + Sind alle übergebenen Wahrscheinlichkeiten gleich, so gäbe es schnellere Programmrealisierungen als $z1$. |
− | + Der Rückgabewert | + | + Der Rückgabewert $\text{random() = 0.2}$ führt zum Ergebnis $z1= 1$. |
Line 38: | Line 43: | ||
− | {Welcher Wert steht in $ | + | {Welcher Wert steht in $\text{p_array[2]}$ beim Aufruf mit $I = 4$ und $p = 0.25$? |
|type="{}"} | |type="{}"} | ||
− | $ | + | $\text{p_array[2]} \ = \ $ { 0.211 3% } |
Revision as of 16:33, 7 August 2018
Die beiden hier angegebenen C-Programme eignen sich zur Erzeugung diskreter Zufallsgrößen:
- Die Funktion $z1$ erzeugt eine $M$–-stufige Zufallsgröße mit dem Wertevorrat $\{0, 1$, ... , $M-1\}$, die dazugehörigen Wahrscheinlichkeiten werden im Array $\text{p_array}$ mit der Eigenschaft „Float” übergeben. Die Funktion $\text{random</i>()}$ liefert gleichverteilte Float–Zufallsgrößen zwischen $0$ und $1$.
- Eine zweite Funktion $z2$ (Quelltext siehe unten) liefert eine spezielle Wahrscheinlichkeitsverteilung, die durch die beiden Parameter $I$ und $p$ festgelegt ist. Dieses geschieht unter Verwendung der Funktion z1.
Hinweise:
- Die Aufgabe gehört zum Kapitel Erzeugung von diskreten Zufallsgrößen.
- Insbesondere wird auf die Seite Erzeugung mehrstufiger Zufallsgrößen Bezug genommen.
Fragebogen
Musterlösung
(2) Richtig sind die Vorschläge 2 und 3:
- Würde man auf die Hilfsvariable $x$ verzichten und in Zeile 8 „summe > random()” schreiben, so würde bei jedem Schleifendurchgang ein neuer Zufallswert erzeugt und $z1$ hätte dann nicht die gewünschten Eigenschaften.
- $z1$ arbeitet gemäß dem Schaubild auf der Seite „Erzeugung mehrstufiger Zufallsgrößen“ im Theorieteil. Dort findet man eine deutlich schnellere Implementierung für den Fall gleicher Wahrscheinlichkeiten ($1/M$).
- Im ersten Durchlauf ($m = 0$) ist in diesem Fall die Rücksprungbedingung aufgrund der Kleiner/Gleich-Abfrage nicht erfüllt; der Ausgabewert ist tatsächlich $z1 = 1$.
(3) Richtig sind die Lösungsvorschläge 1, 3 und 4:
- Es ergibt sich eine binomialverteilte Zufallsgröße, und zwar mit Wertevorrat $\{0, 1, 2, 3, 4\}$.
- Für die Berechnung der Wahrscheinlichkeit ${\rm Pr}(z2 = 0) = (1 -p)^{I}$ benötigt man hier die mathematische Bibliothek.
- Das Potenzieren könnte aber auch durch $I$–fache Multiplikation realisiert werden.
(4) Aufgrund der Zeile 6 beinhaltet das Feldelement $p\_array[0]$ vor der Programmschleife ($i = 0$) den Wert $(1 -p)^{I}$. Im ersten Schleifendurchlauf ($i = 1$) wird folgender Wert eingetragen:
$${p\_array[1]}=\frac{ p\cdot I}{ 1- p}\cdot{p\_array[0]}= I\cdot p\cdot(1- p)^{ I- 1}={\rm Pr}(z2= 1) .$$
Im zweiten Schleifendurchlauf ($i = 2$) wird die Wahrscheinlichkeit für das Ergebnis „2” berechnet: $${p\_array[2]}=\frac{p\cdot (I- 1)}{ 2\cdot ( 1- p)}\cdot{ p\_array[1]}= \left({ I \atop { 2}}\right)\cdot p^{\rm 2}\cdot( 1- p)^{\rm 2}={\rm Pr}( z = 2) .$$
Für $I= 4$ und $p = 0.25$ erhält man folgenden Zahlenwert („4 über 2” ergibt 6): $${p\_array[2]}={\rm Pr}( z 2=2)=6\cdot\frac{1}{16}\cdot\frac{9}{16} \hspace{0.15cm}\underline{=0.211}.$$