Autor |
Beitrag |
GothicSoldier
Hält's aus hier
Beiträge: 15
|
Verfasst: Mo 06.06.05 17:26
1000 zahlen von 1 bis 6 würfelt und anschließend die absoluten und relativen Häufigkeiten für die Zahlen 1 bis 6 ausgibt.
hinweis: würfelt man eine 3, so ist die anzahl der 3-en um 1 zu vergrößern
würfelt man eine x, so ist die anzahl der x-en um 1 zu vergrößern
--> anzahl[x]:=anzahl[x]+1
Random(n) liefert Zahlen von 0 bis n-1
Kann mir irgendjemand weiterhelfen wie ich rangehen muss um das hinzubekommen?
Einloggen, um Attachments anzusehen!
Zuletzt bearbeitet von GothicSoldier am Mo 06.06.05 19:34, insgesamt 2-mal bearbeitet
|
|
hallo
      
Beiträge: 450
WIN XP, SuSE 9.3
D3 Prof, D6 Pers, 2005 Pers
|
Verfasst: Mo 06.06.05 17:43
Du machst einfach ein Array[1..6] of strings und würfle: Wenn du eine 1 Würfelst: inc(arrayname[1])
Das ganze Würfeln packst du in eine Schleife rein: for i:=1 to 1000 do
Danach berechnest du noch die Warscheinlichkeit. Die jeweiligen Anzahlen von 1 steht in arrayname[1] usw. drin.
Wichtig: Wenn du mit random arbeitest, bau nach möglichkeit eine variable Verzögerung (min. 1ms) zwischen dem einzelnen Würfeln ein um Verschiedene Werte zu erhalten!
_________________ Der beste je Programmierte Trojaner: Windows XP
Wäre es nicht adequat, den Usus heterogener Termini zu minimieren?
|
|
Neidhard von Reuental
      
Beiträge: 268
XP
BDS 2006 Prof
|
Verfasst: Mo 06.06.05 17:46
wenn du ein array of string machst kannste das nicht im 1 erhöhen.nimm integer dafür ^^
|
|
hallo
      
Beiträge: 450
WIN XP, SuSE 9.3
D3 Prof, D6 Pers, 2005 Pers
|
Verfasst: Mo 06.06.05 17:54
Ohhh!!!!  Hatte mal wieder nicht richtig aufgepasst!
_________________ Der beste je Programmierte Trojaner: Windows XP
Wäre es nicht adequat, den Usus heterogener Termini zu minimieren?
|
|
F34r0fTh3D4rk
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Mo 06.06.05 17:59
|
|
UGrohne
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Mo 06.06.05 18:03
Hallo,
der Titel Deines Beitrages ist nicht aussagekräftigt genug. Man weiß nicht genau, um was es geht. Bitte ändere ihn entsprechend!
Dies kannst Du tun, indem Du in Deinem ersten Beitrag auf "Edit" klickst und den Titel dort änderst.
Dazu hier auch noch der Auszug aus den Richtlinien:
Richtlinien hat folgendes geschrieben: | 1.2 Beiträge
Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist. Eine Pseudocodezeile oder die Nennung des Objektes, um welches es sich in dem Beitrag handelt, helfen da schon mehr weiter. Wenn Du beispielsweise wissen möchtest, wie es möglich ist, eine Integer-Variable in das String-Format zu konvertieren, würde ein Beitrag wie etwa "Integer zu String" oder "Integerkonvertierung" anderen Forenmitgliedern einen kurzen Überblick über die eigentliche Fragestellung verschaffen. So ist es möglich gezielter Lösungen für Probleme zu finden. Zudem solltest du immer daran denken: Der Fragesteller möchte etwas von den anderen Usern - nicht umgekehrt. |
Vielen Dank
Gruß,
Uwe
|
|
GothicSoldier 
Hält's aus hier
Beiträge: 15
|
Verfasst: Mo 06.06.05 18:44
Hey, danke für eure hilfe ; )
Ihr seid die Besten ^_^
|
|
MarkusZi
Hält's aus hier
Beiträge: 11
Win XP, Vista
D4 Prof
|
Verfasst: Mo 06.06.05 19:00
Insgesamt denke ich brauchst du das, oder?
Einloggen, um Attachments anzusehen!
|
|
GothicSoldier 
Hält's aus hier
Beiträge: 15
|
Verfasst: Mo 06.06.05 19:04
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.Button1Click(Sender: TObject); var wuerfel: array [1..6] of integer; i, c: integer; begin randomize; for i := 1 to 1000 do begin c := random(6) + 1; wuerfel[c] := wuerfel[c] + 1; end; end; |
wenn ich mich nach dem quellcode richte, ist denn da ein edit1 feld noch notwendig?
ich komm mit der Ein und Ausgabe nicht klar 
|
|
GothicSoldier 
Hält's aus hier
Beiträge: 15
|
Verfasst: Mo 06.06.05 19:05
boah.....du bist ja super, konntest meine gedanken lesen *G*
dankeschön =)
|
|
GothicSoldier 
Hält's aus hier
Beiträge: 15
|
Verfasst: Mo 06.06.05 19:10
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49:
| procedure Button1Click(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject); var i, c, anzahl: integer; wuerfel : array [1..6] of integer; begin anzahl := StrToInt(Edit1.Text); for i := 1 to 6 do wuerfel[i] := 0; randomize; for i := 1 to anzahl do begin c := random(6) + 1; wuerfel[c] := wuerfel[c] + 1; end; abs1.Caption := IntToStr(wuerfel[1]); abs2.Caption := IntToStr(wuerfel[2]); abs3.Caption := IntToStr(wuerfel[3]); abs4.Caption := IntToStr(wuerfel[4]); abs5.Caption := IntToStr(wuerfel[5]); abs6.Caption := IntToStr(wuerfel[6]); rel1.Caption := FloatToStr(wuerfel[1]/anzahl); rel2.Caption := FloatToStr(wuerfel[2]/anzahl); rel3.Caption := FloatToStr(wuerfel[3]/anzahl); rel4.Caption := FloatToStr(wuerfel[4]/anzahl); rel5.Caption := FloatToStr(wuerfel[5]/anzahl); rel6.Caption := FloatToStr(wuerfel[6]/anzahl); ProgressBar1.Position := Round((wuerfel[1]/anzahl)*100); ProgressBar2.Position := Round((wuerfel[2]/anzahl)*100); ProgressBar3.Position := Round((wuerfel[3]/anzahl)*100); ProgressBar4.Position := Round((wuerfel[4]/anzahl)*100); ProgressBar5.Position := Round((wuerfel[5]/anzahl)*100); ProgressBar6.Position := Round((wuerfel[6]/anzahl)*100);
end;
end. |
wärs möglich, dass du mir einiges erklärst damit ich das vollkommen verstehe?
will das ja nicht nur so übernehmen, sondern auch gern verstehen =)
Delphi-Quelltext 1:
| ProgressBar1.Position := Round((wuerfel[1]/anzahl)*100); | was sagt der befehl aus?
Delphi-Quelltext 1:
| rel1.Caption := FloatToStr(wuerfel[1]/anzahl); |
wieso muss ich durch die anzahl teilen?
ich nehm gerne jede erläuterung entgegen 
|
|
F34r0fTh3D4rk
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Mo 06.06.05 19:18
Delphi-Quelltext 1: 2:
| ProgressBar1.Position := Round((wuerfel[1]/anzahl)*100); |
setzt die position der progressbar auf den umgerechneten wert
und das mim teilen ist die relative wahrscheinlichkeit 
|
|
MarkusZi
Hält's aus hier
Beiträge: 11
Win XP, Vista
D4 Prof
|
Verfasst: Mo 06.06.05 19:23
Also die ProgressBar hab ich genommen, weil man damit relativ schnell und einfach Balken darstellen kann. Man stellt sie nur auf Orientation := pbVertical (im Ojektinspektor) und auf Smooth := TRUE, so dass keine Abstufungen drin sind.
Die Labels Rel1 bis Rel6 sind also die relativen Häufigkeiten, Abs1 bis Abs6 die absoluten....
reicht das?
Ich denke alles andere ist ziemlich selbsterklärend!
|
|
GothicSoldier 
Hält's aus hier
Beiträge: 15
|
Verfasst: Mo 06.06.05 19:23
soo und da habe ich noch eine frage:
Delphi-Quelltext
Delphi-Quelltext
sind solche 'speziellen' labels nötig? gehen denn nicht auch 'normale' labels?
uuund wie kann ich machen, dass nicht 0,165 angezeigt wird, sondern 16,5% meinetwegen?
*liebschau* danke vielmals 
|
|
MarkusZi
Hält's aus hier
Beiträge: 11
Win XP, Vista
D4 Prof
|
Verfasst: Mo 06.06.05 19:27
Ich hab die Labels nur umbenannt, damit man sie besser auseinanderhalten kann!
Also:
Quelltext 1:
| rel1.Caption := FloatToStr((wuerfel[1]/anzahl)*100)+'%'; |
|
|
GothicSoldier 
Hält's aus hier
Beiträge: 15
|
Verfasst: Mo 06.06.05 19:33
gut. danke. nun sind alle fragen geklärt =)
ich bedanke mich bei ALLEN. (:
|
|