![]() |
Delphi-Version: 5
Beginner: Münzwurf
Hallo liebe Community,
da dies mein erster Beitrag ist möchte ich mich hier kurz vorstellen: Student der Wirtschaftsinformatik, Programmierkenntnisse = 0 (arbeite aber aufrichtig daran, dies zu ändern). Ich arbeite gerade das Script unseres Profs durch und hänge seit über einer Stunde an einer Aufgabe fest. Diese lautet: Schreiben Sie ein Programm das SOZUSAGEN eine Münze x mal wirft und die relative Häufigkeit für Kopf ausgibt. Hier der Code den ich bislang erarbeitet habe:
Code:
Ich habe vor die relative Häufigkeit von Kopf dadurch zu ermitteln, ob ein Zufallswert (random(x)) gerade oder ungerade ist. Soweit klappt die Ausgabe auch wunderbar, jedoch habe ich es nicht hinbekommen zu zählen wie oft der Wert random(x) gerade oder ungerade ist.
program Muenzwurf;
var n,x,Anzahl,Zufall:Int64; begin writeln('Muenzwurf'); writeln('Wie oft soll die Muenze geworfen werden?'); readln(Anzahl); for n:=1 to Anzahl do begin x:=n+1; Zufall:=random(x); If Odd(Zufall) then writeln('Kopf') else writeln('Zahl'); end; readln(); end. Wie würdet ihr das anstellen? Schöne Grüße und schonmal Danke für die Anregungen! |
AW: Beginner: Münzwurf
Delphi-Quellcode:
Grüße
program Muenzwurf;
var n,x,Anzahl,Zufall, oddCount:Int64; begin writeln('Muenzwurf'); writeln('Wie oft soll die Muenze geworfen werden?'); readln(Anzahl); oddCount := 0; for n:=0 to Anzahl do begin x:=n+1; Zufall:=random(x); If Odd(Zufall) then begin writeln('Kopf'); inc(oddCount,1); end else writeln('Zahl'); end; readln(); end. Klaus |
AW: Beginner: Münzwurf
ES fehlt die Ausgabe von oddcount zum Schluss.
|
AW: Beginner: Münzwurf
Vielen, vielen Dank Klaus. Jetzt komm ich mir extrem dumm vor und das ist auch gut so. :-D
Delphi-Quellcode:
program Muenzwurf;
var n,x,Anzahl,Zufall,oddCount:Int64; Kopf: real; begin writeln('Muenzwurf'); writeln('Wie oft soll die Muenze geworfen werden?'); readln(Anzahl); oddCount:=0; for n:=1 to Anzahl do begin x:=n+1; Zufall:=random(x); If Odd(Zufall) then begin writeln('Kopf'); inc(oddCount,1); end else writeln('Zahl'); end; Kopf:=(oddCount/Anzahl)*100; writeln('Relative Haeufigkeit von Kopf:',Kopf:6:2,' Prozent.'); readln(); end. |
AW: Beginner: Münzwurf
Da eine Münze nur 2 Seiten hat, sollte man vielleicht lieber "Random(2)" nehmen, was zwei Zufallszahlen - nämlich 0 oder 1 - erzeugt.
Die ungeraden - sprich 1 - kann man dann mit "Odd" zählen und in OddCount speichern. Dann wird die relative Häufigkeit durch "RelHaeuf := OddCount/Anzahl;" berechnet. Achtung: Die Schleife sollte dann von 1 bis Anzahl laufen, damit die "Münze" wirklich Anzahl-mal geworfen wird. Zu Beginn sollte man noch "Randomize" einsetzen, damit nicht immer der "gleiche Zufall" abläuft.
Code:
program Muenzwurf;
var n, Anzahl,Zufall, oddCount:Int64; RelHaeuf: Real; begin Randomize; // initialisiert die "Random seed number" mit der Anzahl der Millisekunden seit Computerstart writeln('Muenzwurf'); writeln('Wie oft soll die Muenze geworfen werden?'); readln(Anzahl); oddCount := 0; for n := 1 to Anzahl do begin Zufall:=random(2); If Odd(Zufall) then begin writeln('Kopf'); inc(oddCount,1); end else writeln('Zahl'); end; RelHaeuf := oddCount/Anzahl; writeln('Relative Häufigkeit: ', RelHaeuf); readln(); end. |
AW: Beginner: Münzwurf
Danke für die Antwort! Das sind einige sehr nützliche Tipps! Nur falls nochmal jemand danach sucht, hier der finale Code:
Delphi-Quellcode:
program Muenzwurf;
var n, Anzahl,Zufall, oddCount:Int64; RelHaeuf: Real; begin Randomize; writeln('Muenzwurf'); writeln('Wie oft soll die Muenze geworfen werden?'); readln(Anzahl); oddCount:=0; for n:=1 to Anzahl do begin Zufall:=random(2); If Odd(Zufall) then begin writeln('Kopf'); inc(oddCount,1); end else writeln('Zahl'); end; RelHaeuf:=(oddCount/Anzahl)*100; writeln('Relative Haeufigkeit von Kopf:',RelHaeuf:6:2,'%'); readln(); end. |
AW: Beginner: Münzwurf
Moin...:P
Zitat:
|
AW: Beginner: Münzwurf
Zitat:
Die Unterrichtsmaterialien an einer Hochschule heißen Skripte. </Klugscheiss> |
AW: Beginner: Münzwurf
Wenn man eine große Anzahl nimmt, macht es vllt. nicht immer Sinn, jedes Kopf und Zahl einzeln auszugeben, dann ließe sich das noch verkürzen zu:
Delphi-Quellcode:
program Muenzwurf;
var n, Anzahl, oddCount:Int64; RelHaeuf: Real; begin Randomize; writeln('Muenzwurf'); writeln('Wie oft soll die Muenze geworfen werden?'); readln(Anzahl); oddCount:=0; for n:=1 to Anzahl do oddCount:=oddCount+random(2); RelHaeuf:=(oddCount/Anzahl)*100; writeln('Relative Haeufigkeit von Kopf:',RelHaeuf:6:2,'%'); readln(); end. |
AW: Beginner: Münzwurf
Vielleicht ist
![]() Rollo |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz