Autor Beitrag
GothicSoldier
Hält's aus hier
Beiträge: 15



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 450

WIN XP, SuSE 9.3
D3 Prof, D6 Pers, 2005 Pers
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 268

XP
BDS 2006 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 450

WIN XP, SuSE 9.3
D3 Prof, D6 Pers, 2005 Pers
BeitragVerfasst: Mo 06.06.05 17:54 
Ohhh!!!! :oops: :oops: :oops: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Mo 06.06.05 17:59 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.Button1Click(Sender: TObject);
var
  wuerfel: array [1..6of integer;
  i: integer;
begin
  randomize;
  for i := 1 to 1000 do
    inc(wuerfel[random(6) + 1]);
end;

wenns mit inc net funzt dann mach das so:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.Button1Click(Sender: TObject);
var
  wuerfel: array [1..6of integer;
  i, c: integer;
begin
  randomize;
  for i := 1 to 1000 do
    begin
      c := random(6) + 1;
      wuerfel[c] := wuerfel[c] + 1;
    end;
end;
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: 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
BeitragVerfasst: Mo 06.06.05 19:00 
Insgesamt denke ich brauchst du das, oder?
Einloggen, um Attachments anzusehen!
GothicSoldier Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mo 06.06.05 19:04 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.Button1Click(Sender: TObject);
var
  wuerfel: array [1..6of 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 Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mo 06.06.05 19:05 
boah.....du bist ja super, konntest meine gedanken lesen *G*

dankeschön =)
GothicSoldier Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mo 06.06.05 19:10 
ausblenden volle Höhe Delphi-Quelltext
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
    { Private-Deklarationen}
  public
    { Public-Deklarationen}
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
   i, c, anzahl: integer;
   wuerfel : array [1..6of 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 =)

ausblenden Delphi-Quelltext
1:
  ProgressBar1.Position := Round((wuerfel[1]/anzahl)*100);					
was sagt der befehl aus?

ausblenden Delphi-Quelltext
1:
rel1.Caption := FloatToStr(wuerfel[1]/anzahl);					

wieso muss ich durch die anzahl teilen?

ich nehm gerne jede erläuterung entgegen :)
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Mo 06.06.05 19:18 
ausblenden 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 :wink:
MarkusZi
Hält's aus hier
Beiträge: 11

Win XP, Vista
D4 Prof
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mo 06.06.05 19:23 
soo und da habe ich noch eine frage:

ausblenden Delphi-Quelltext
1:
rel6: TLabel;					


ausblenden Delphi-Quelltext
1:
abs1: TLabel;					


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
BeitragVerfasst: Mo 06.06.05 19:27 
Ich hab die Labels nur umbenannt, damit man sie besser auseinanderhalten kann!

Also:

ausblenden Quelltext
1:
     rel1.Caption := FloatToStr((wuerfel[1]/anzahl)*100)+'%';					
GothicSoldier Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mo 06.06.05 19:33 
gut. danke. nun sind alle fragen geklärt =)

ich bedanke mich bei ALLEN. (: