Zufallszahlen

Aus ProgrammingWiki
Archivierte Version vom 2012-06-25T12:31:40+00:00. Aktuelle Version

Inhaltsverzeichnis

Zufallszahlen

Erzeugen von Zufallszahlen




Anwendung: Würfeln


Nun sollen nur Ergebnisse zufällig erzeugt werden, wie sie an einem idealen Würfel eintreten können.
Ergänze die Boxen analog dem obigen Beispiel und teste das Ergebnis.



Simuliere nun ein Würfelspiel mit einem idealen Würfel. Für eine Anzahl n von Würfen soll die Anzahl aller geworfenen Augenzahlen ausgegeben werden.

Hinweis: Es soll also für jede mögliche Augenzahl eine Variable vereinbart werden, eine beliebige Anzahl von (simulierten)
Versuchen durchgeführt werden und die Anzahl der gewürfelten Einsen, Zweien, ..., Sechsen ausgegeben werden.
Stelle zunächst einen Algorithmus in einem Struktogramm dar.
Entscheide Dich bewusst für function oder procedure.



zum Weiterarbeiten: Zeige durch eine analoge Simulation, dass die Zufallsgröße "Augensumme beim Würfeln mit zwei idealen Würfeln" nicht gleichverteilt ist.

Zufallszahlen


Erzeugen von Zufallszahlen

zunächst als function, die aufgerufen wird:


<eval id="4be10a1ebb218"> begin writeln(inttostr(zufall(100))); end.</eval>


andere, kürzere Variante:

<eval id="4be1207f5f5c1"> begin writeln(inttostr(random(100))); end. </eval>

Ist diese Variante für Programme praktikabel?


Würfeln


Simulieren Sie ein Würfelspiel mit einem idealen Würfel. Für eine Anzahl n von Würfen soll die Anzahl der geworfenen Augenzahlen ausgegeben werden.


<eval id="4bf2b9d356f46"></eval>


Formulieren Sie anhand der Simulation eine Aussage über große Zahlen und die Wahrscheinlichkeit. ("Gesetz der großen Zahlen")


zum Weiterarbeiten: Zeigen Sie durch eine analoge Simulation, dass die Zufallsgröße "Augensumme beim Würfeln mit zwei idealen Würfeln" nicht gleichverteilt ist.



procedure wuerfelsumme(n:integer;var z,d,v,f,s,si,a,ne,ze,e,zw:integer);
var i,zz1,zz2,sum:integer;
begin
z:=0;d:=0;v:=0;f:=0;s:=0;si:=0;a:=0;ne:=0;ze:=0;e:=0;zw:=0;
for i:=1 to n do 
begin
zz1:=random(6)+1;
zz2:=random(6)+1;
sum:=zz1+zz2;
if sum=2 then z:=z+1;
if sum=3 then d:=d+1;
if sum=4 then v:=v+1;
if sum=5 then f:=f+1;
if sum=6 then s:=s+1;
if sum=7 then si:=si+1;
if sum=8 then a:=a+1;
if sum=9 then ne:=ne+1;
if sum=10 then ze:=ze+1;
if sum=11 then e:=e+1;
if sum=12 then zw:=zw+1;
end;
end;