AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Beginner: Münzwurf

Ein Thema von jdiephaus · begonnen am 29. Nov 2016 · letzter Beitrag vom 30. Nov 2016
Antwort Antwort
Seite 1 von 2  1 2   
jdiephaus

Registriert seit: 29. Nov 2016
15 Beiträge
 
#1

Beginner: Münzwurf

  Alt 29. Nov 2016, 20:33
Delphi-Version: 5
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:
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.
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.

Wie würdet ihr das anstellen?

Schöne Grüße und schonmal Danke für die Anregungen!

Geändert von jdiephaus (29. Nov 2016 um 20:38 Uhr)
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.753 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Beginner: Münzwurf

  Alt 29. Nov 2016, 20:38
Delphi-Quellcode:
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.
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

AW: Beginner: Münzwurf

  Alt 29. Nov 2016, 20:55
ES fehlt die Ausgabe von oddcount zum Schluss.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
jdiephaus

Registriert seit: 29. Nov 2016
15 Beiträge
 
#4

AW: Beginner: Münzwurf

  Alt 29. Nov 2016, 20:56
Vielen, vielen Dank Klaus. Jetzt komm ich mir extrem dumm vor und das ist auch gut so.

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.
  Mit Zitat antworten Zitat
Benutzerbild von Kalakmul
Kalakmul

Registriert seit: 11. Apr 2008
27 Beiträge
 
Delphi 2010 Professional
 
#5

AW: Beginner: Münzwurf

  Alt 29. Nov 2016, 21:03
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.
Wer fragt, ist ein Narr für 5 Minuten, wer nicht fragt, ist ein Narr ein Leben lang.

Geändert von Kalakmul (29. Nov 2016 um 21:09 Uhr)
  Mit Zitat antworten Zitat
jdiephaus

Registriert seit: 29. Nov 2016
15 Beiträge
 
#6

AW: Beginner: Münzwurf

  Alt 29. Nov 2016, 21:17
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.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.288 Beiträge
 
Delphi 12 Athens
 
#7

AW: Beginner: Münzwurf

  Alt 30. Nov 2016, 05:46
Moin...
Zitat:
Ich arbeite gerade das Script unseres Profs durch
...zu einem Delphi Progamm Script zu sagen, ist wie Jehova zu sagen...
  Mit Zitat antworten Zitat
relocate

Registriert seit: 26. Mai 2009
60 Beiträge
 
#8

AW: Beginner: Münzwurf

  Alt 30. Nov 2016, 05:53
Moin...
Zitat:
Ich arbeite gerade das Script unseres Profs durch
...zu einem Delphi Progamm Script zu sagen, ist wie Jehova zu sagen...
<Klugscheiss>
Die Unterrichtsmaterialien an einer Hochschule heißen Skripte.
</Klugscheiss>
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#9

AW: Beginner: Münzwurf

  Alt 30. Nov 2016, 08:23
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.
Ralph
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.896 Beiträge
 
Delphi 12 Athens
 
#10

AW: Beginner: Münzwurf

  Alt 30. Nov 2016, 13:34
Vielleicht ist das auch interessant, wenn du mal nicht mit ideal-gleichverteilten Zufällen testen möchtest (also im Fachjargon Schummeln genannt ).

Rollo

Geändert von Rollo62 (30. Nov 2016 um 13:38 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz