Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Randomize in einer klasse will nicht wie ich (https://www.delphipraxis.net/42913-randomize-einer-klasse-will-nicht-wie-ich.html)

FabianIBerlin 25. Mär 2005 19:56


Randomize in einer klasse will nicht wie ich
 
Ich habe eine Klasse geschrieben die vorerst nur einen würflen simulieren soll und diese klasse wird von 5 andersnamigen "würfeln" benutz. wenn ich diesen prozess jedoch aufrufe sind alle ergebnisse gleich. was kann man da machen?

Code:
  Wuerfel1, Wuerfel2, Wuerfel3, Wuerfel4, Wuerfel5, Wuerfel6 :TWuerfel;

implementation

{$R *.dfm}

procedure TForm1.AnzeigeAktualisieren;
begin
  Dice1label.Caption := IntToStr(Wuerfel1.GetWuerfelzahl);
  Dice2label.Caption := IntToStr(Wuerfel2.GetWuerfelzahl);
  Dice3label.Caption := IntToStr(Wuerfel3.GetWuerfelzahl);
  Dice4label.Caption := IntToStr(Wuerfel4.GetWuerfelzahl);
  Dice5label.Caption := IntToStr(Wuerfel5.GetWuerfelzahl);
end;

procedure wuerfeln(nummer : integer);
begin
  case nummer of
    1 : Wuerfel1.Wuerfeln;
    2 : Wuerfel2.Wuerfeln;
    3 : Wuerfel3.Wuerfeln;
    4 : Wuerfel4.Wuerfeln;
    5 : Wuerfel5.Wuerfeln;
  end;
end;

procedure TForm1.WuerfelnBtnClick(Sender: TObject);
var i : integer;
begin
  for i := 1 to 6 do
    wuerfeln(i);
  AnzeigeAktualisieren;
end;
und in der klasse sieht das so aus:

Code:
procedure TWuerfel.Wuerfeln;
begin
  randomize;
  Wuerfelzahl := Random(5)+1;
end;

BenjaminH 25. Mär 2005 19:59

Re: Randomize in einer klasse will nicht wie ich
 
Man sollte Randomize nur einmal aufrufen, d.h. nicht jedesmal beim Würfeln.
Führe doch einfach einen Conctructor ein, der das Randomize erledigt, dann sollte das funktionieren.

SirThornberry 25. Mär 2005 20:00

Re: Randomize in einer klasse will nicht wie ich
 
randomize sollte man nur einmal im Programm aufrufen. Also einfach im OnCreate des Forms einmal Randomize aufrufen und dann nie wieder.

FabianIBerlin 25. Mär 2005 20:10

Re: Randomize in einer klasse will nicht wie ich
 
wenn das unser lehrer uns mal erzählt hätte Rolling Eyes .
Aber könnt ihr mir sagen warum man es nur einmal aufrufen soll?

jfheins 25. Mär 2005 20:11

Re: Randomize in einer klasse will nicht wie ich
 
Zitat:

Zitat von FabianIBerlin
wenn das unser lehrer uns mal erzählt hätte :roll: .
Aber könnt ihr mir sagen warum man es nur einmal aufrufen soll? :D

Weil du sonst nicht mehr so gute Pseudozufallszahlen erhälts ...

randomize initialisiert den Zahlengenerator mit der systemzeit, wenn du das ständig machst, sind deine zufallszahlen vorhersagbar ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:24 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