PMG/Kurs 11/Zufallszahlen

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

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


Es gibt "echte" Zufallszahlen und sogenannte Pseudozufallszahlen. Informiere Dich unter [http://de.wikipedia.org/wiki/Zufallszahl#In_der_Informatik].<br>
Im PC werden i.A. Pseudozufallszahlen in Abhängigkeit von der Systemzeit erzeugt.


=== Erzeugen von Zufallszahlen ===


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


<run id="4fe85b48efd17">
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 id="4fe85b48efc01">
function wurf(a:integer):integer;
begin

end;
</code>



<run id="4fe85b48efe61">
</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.
 Entscheide Dich bewusst für ''function'' oder ''procedure''.

<code id="4fe85b48efc6b">

</code>


<run id="4fe85b48efed5">

</run>


'''Es ist folgender Quelltext gegeben. Was leistet das zugehörige Programm?'''

 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;