Aufgaben:Aufgabe 2.7: C-Programme z1 und z2: Unterschied zwischen den Versionen
Aus LNTwww
K Textersetzung - „*Sollte die Eingabe des Zahlenwertes „0” erforderlich sein, so geben Sie bitte „0.” ein.“ durch „ “ |
Add English interlanguage link |
||
| (8 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
| Zeile 3: | Zeile 3: | ||
}} | }} | ||
[[Datei:P_ID122__Sto_A_2_7.png|right|C-Programme zur Erzeugung diskreter Zufallsgrößen]] | [[Datei:P_ID122__Sto_A_2_7.png|right|frame|C-Programme zur Erzeugung <br>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()}$ 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$. | |||
*Die Aufgabe gehört zum Kapitel [[Stochastische_Signaltheorie/Erzeugung_von_diskreten_Zufallsgrößen|Erzeugung von diskreten Zufallsgrößen]]. | |||
*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. | |||
Hinweise: | |||
*Die Aufgabe gehört zum Kapitel [[Stochastische_Signaltheorie/Erzeugung_von_diskreten_Zufallsgrößen|Erzeugung von diskreten Zufallsgrößen]]. | |||
*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. | |||
| Zeile 18: | Zeile 24: | ||
<quiz display=simple> | <quiz display=simple> | ||
{Es gelte $M=4$ und $ | {Es gelte $M=4$ und $\text{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 folgenden Aussagen sind bezüglich $z1$ zutreffend? | |||
{Welche der | |||
|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$. | ||
{Welche der | {Welche der folgenden Aussagen sind bezüglich $z2$ zutreffend? | ||
|type="[]"} | |type="[]"} | ||
+ Das Programm erzeugt eine | + Das Programm erzeugt eine binomialverteilte Zufallsgröße. | ||
- Das Programm erzeugt eine | - Das Programm erzeugt eine poissonverteilte Zufallsgröße. | ||
+ Mit $I = 4$ sind für $z2$ die Werte $0, 1, 2, 3, 4$ möglich. | + Mit $I = 4$ sind für $z2$ die Werte $0, \ 1, \ 2, \ 3, \ 4$ möglich. | ||
+ Das Einbinden der mathematischen Bibliothek „'''math.h'''” ist erforderlich, da in $z2$ die Funktion & | + Das Einbinden der mathematischen Bibliothek „'''math.h'''” ist erforderlich, da in $z2$ die Funktion '''pow''' (Potenzieren) verwendet wird. | ||
{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% } | ||
| Zeile 48: | Zeile 54: | ||
===Musterlösung=== | ===Musterlösung=== | ||
{{ML-Kopf}} | {{ML-Kopf}} | ||
'''(1)''' Nach dem ersten Schleifendurchlauf ( | '''(1)''' Nach dem ersten Schleifendurchlauf $(m = 0)$ ist die Variable $\text{summe = 0.2}$, beim nächsten $(m = 1)$ gilt $\text{summe = 0.2 + 0.3 = 0.5}$. | ||
*In beiden Fällen ist somit die Variable $\text{summe}$ kleiner als $x = 0.75$. | |||
*Erst bei $m = 2$ ist die Rücksprungbedingung erfüllt: $0.9 > x$. Somit ist $\underline{z1 = 2}$. | |||
'''(2)''' Richtig sind die <u>Lösungsvorschläge 2 und 3</u>: | |||
*Würde man auf die Hilfsvariable $x$ verzichten und in Zeile 8 dafür $\text{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 <u>Lösungsvorschläge 1, 3 und 4</u>: | |||
*Es ergibt sich eine binomialverteilte Zufallsgröße, und zwar mit dem 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 $ | '''(4)''' Aufgrund der Zeile 6 beinhaltet das Feldelement $\text{p_array[0]}$ vor der Programmschleife $(i = 0)$ den Wert $(1 -p)^{I}$. | ||
$${ | *Im ersten Schleifendurchlauf $(i = 1)$ wird folgender Wert eingetragen: | ||
:$$\text{p_array[1]}=\frac{ p\cdot I}{ 1- p}\cdot\text{p_array[0]}= I\cdot p\cdot(1- p)^{ I- 1}={\rm Pr}(z2= 1) .$$ | |||
Im zweiten Schleifendurchlauf ( | *Im zweiten Schleifendurchlauf $(i = 2)$ wird die Wahrscheinlichkeit für das Ergebnis „$z2=2$” berechnet: | ||
$${ | :$$\text{p_array[2]}=\frac{p\cdot (I- 1)}{ 2\cdot ( 1- p)}\cdot\text{p_array[1]}= \left({ I \atop { 2}}\right)\cdot p^{\rm 2}\cdot( 1- p)^{\rm 2}={\rm Pr}( z2 = 2) .$$ | ||
Für $I= 4$ und $p = 0.25$ erhält man folgenden Zahlenwert | *Für $I= 4$ und $p = 0.25$ erhält man folgenden Zahlenwert ⇒ „$4$ über $2$” $=6$: | ||
$${ | :$$\text{p_array[2]}={\rm Pr}( z 2=2)=6\cdot\frac{1}{16}\cdot\frac{9}{16} \hspace{0.15cm}\underline{=0.211}.$$ | ||
\hspace{0.15cm}\underline{=0.211}.$$ | |||
{{ML-Fuß}} | {{ML-Fuß}} | ||
| Zeile 76: | Zeile 88: | ||
[[Category:Aufgaben zu Stochastische Signaltheorie|^2.5 Erzeugung diskreter Zufallsgrößen^]] | [[Category:Aufgaben zu Stochastische Signaltheorie|^2.5 Erzeugung diskreter Zufallsgrößen^]] | ||
[[en:Aufgaben:Exercise_2.7:_C_Programs_"z1"_and_"z2"]] | |||
Aktuelle Version vom 16. März 2026, 14:35 Uhr

diskreter Zufallsgrößen
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()}$ 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
(1) Nach dem ersten Schleifendurchlauf $(m = 0)$ ist die Variable $\text{summe = 0.2}$, beim nächsten $(m = 1)$ gilt $\text{summe = 0.2 + 0.3 = 0.5}$.
- In beiden Fällen ist somit die Variable $\text{summe}$ kleiner als $x = 0.75$.
- Erst bei $m = 2$ ist die Rücksprungbedingung erfüllt: $0.9 > x$. Somit ist $\underline{z1 = 2}$.
(2) Richtig sind die Lösungsvorschläge 2 und 3:
- Würde man auf die Hilfsvariable $x$ verzichten und in Zeile 8 dafür $\text{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 dem 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 $\text{p_array[0]}$ vor der Programmschleife $(i = 0)$ den Wert $(1 -p)^{I}$.
- Im ersten Schleifendurchlauf $(i = 1)$ wird folgender Wert eingetragen:
- $$\text{p_array[1]}=\frac{ p\cdot I}{ 1- p}\cdot\text{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 „$z2=2$” berechnet:
- $$\text{p_array[2]}=\frac{p\cdot (I- 1)}{ 2\cdot ( 1- p)}\cdot\text{p_array[1]}= \left({ I \atop { 2}}\right)\cdot p^{\rm 2}\cdot( 1- p)^{\rm 2}={\rm Pr}( z2 = 2) .$$
- Für $I= 4$ und $p = 0.25$ erhält man folgenden Zahlenwert ⇒ „$4$ über $2$” $=6$:
- $$\text{p_array[2]}={\rm Pr}( z 2=2)=6\cdot\frac{1}{16}\cdot\frac{9}{16} \hspace{0.15cm}\underline{=0.211}.$$