Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zufall wiederholt sich?? (https://www.delphipraxis.net/72104-zufall-wiederholt-sich.html)

ferby 26. Jun 2006 07:29

Re: Zufall wiederholt sich??
 
Hallo,

bei mir war das aber auch schon oft,
das ich randomize direkt in eine Schleife rein geschrieben habe,
weil die Zahlen nicht mehr zufällig waren.
Ich weiß auch nicht warum das so ist,
aer wenn man randomize nur 1x im Create Teil schreibt und dann
in einer Schleife Zufallszahlen erzeugt,
dann sind die bei mir auch nicht mehr Zufällig...
Bei mir war es so das eine Zahl erzeugt wurde und
immmer wieder die selbe Zahl "zufällig" ermittelt wurde.

morri 26. Jun 2006 08:02

Re: Zufall wiederholt sich??
 
Zitat:

var
Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.CreateForm(Sender: TObject);
begin
Randomize;
end;
......

Sag mal kann es sein, dass du formcreate meinst, und nicht createform?

Denn das Randomize wird so gar nicht aufgerufen und du hast defacto nur eins!

ferby 8. Jul 2006 01:23

Re: Zufall wiederholt sich??
 
Hi,

Zitat:

Sag mal kann es sein, dass du formcreate meinst, und nicht createform?
Wer ist mit "du" gemeint?


Falls ich es bin:
Ich verwende

Delphi-Quellcode:
procedure TForm1.CreateForm(Sender: TObject);



Gruß,
Ferby

Alexander Roth 8. Jul 2006 06:08

Re: Zufall wiederholt sich??
 
@daredd:
So viele Constanten/Variablen sind schlecht. Und dazu machen sie noch viel arbeit.

So wie ich den Code sehe habe ich die Frage:
Wieso überhaupt Constanten, denn sie sind ja lokal und werden anscheinend nur hier gebraucht.

Delphi-Quellcode:
procedure TForm1.Zufall(Sender: TObject);
begin
NSpin18.Text:=IntToStr(Random(7))+','+IntToStr(Random(7))+IntToStr(Random(7));
SSpin18.Text:=IntToStr(Random(9))+','+IntToStr(Random(9))+IntToStr(Random(9));
.......
.......
.......
end;
Das ganze könnte man dann noch verkürzen, allerdings müsste man die Namensgebung der Einzelnen Komponenten überdenken. Man könnte diese Komponenten auch mit FindComponent ansprechen. Dann könnte man das alles in 2 Schleifen packen. Eine für die 7er Komponenten und eine für die 9er Komponenten.

Go2EITS 8. Jul 2006 07:46

Re: Zufall wiederholt sich??
 
procedure TForm1.FormCreate(Sender: TObject);

Ich denke da ist Randomize gut aufgehoben. Da liegt Dein erster Fehler!

Randomize erzeugt, so weit ich weiss, aus Uhrzeit und Datum neue Zufallszahlen.

Füge mal ein Showmessage('Hier ist Randomize'); direkt bei Randomize und Showmessage('Hier ist die Verarbeitung' ein.) bei Deiner Procedur, die die Zufallszahlen verarbeitet. Dann siehst Du was passiert und Randomze überhaupt aufgerufen wird.

Randomize darf nur einmal aufgerufen werden.

Deine Procedure zur Verarbeitung muss nach Randomize aufgerufen werden. Sonst bingt es nichts, außer immer gleicher Zufallszahlen.

Falls Du immer noch gleich Zufallswerte hast, muss Du Randomize einfach mal woanders hinpacken und vor einem Random aufrufen.

Falls es immer noch nicht klappt, bitte ganzen Code hier zeigen.

CU
Go2EITS


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:03 Uhr.
Seite 2 von 2     12   

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