PMG/Kurs 11/Zufallszahlen

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Pascal</language>
== Zufallszahlen ==

=== Erzeugen von Zufallszahlen ===


<code>
function zufall(a:integer):integer;
begin
result:=random(a);
end;
</code>


<run>
writeln(zufall(100));
</run>


=== Anwendung: Würfeln ===


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

<code>
function wurf(a:integer):integer;
begin

end;
</code>



<run>
</run>


Simuliere nun ein Würfelspiel mit einem idealen Würfel.
Für eine Anzahl <math>n</math> von Würfen soll die Anzahl aller geworfenen Augenzahlen ausgegeben werden.<br>
 ''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.<br>
 Entscheide Dich bewusst für ''function'' oder ''procedure''.

<code>

</code>


<run>

</run>



<font color="darkgreen">'''''zum Weiterarbeiten:'''''</font> Zeige durch eine analoge Simulation, dass die Zufallsgröße "[[Augensumme beim Würfeln mit zwei idealen Würfeln]]" nicht gleichverteilt ist.
<br><br>

== Zufallszahlen ==


=== Erzeugen von Zufallszahlen ===

''zunächst als function, die aufgerufen wird:''

<code id="4be10a7306816">
function zufall(a:integer):integer;
begin
result:=random(a);
end;
</code>



<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 <math>n</math> von Würfen soll die Anzahl der geworfenen Augenzahlen ausgegeben werden.

<code id="4bf2b9d35501b">

</code>


<eval id="4bf2b9d356f46">


</eval>

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


<font color="darkgreen">'''''zum Weiterarbeiten:'''''</font> Zeigen Sie durch eine analoge Simulation, dass die Zufallsgröße "[[Augensumme beim Würfeln mit zwei idealen Würfeln]]" nicht gleichverteilt ist.
<br><br><br>


 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;