Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Problem mit Zufallszahlen (https://www.delphipraxis.net/155794-problem-mit-zufallszahlen.html)

Spezi 8. Nov 2010 17:23

Delphi-Version: 2005

Problem mit Zufallszahlen
 
Hi,

in meinem Programm will ich ein Feld mit einigen Punkten füllen. Diese sollen zufällig verteilt werden.
Jedoch werden die Punkte alle auf eine Linie gelegt, zwar mit unterschiedlichen Abständen aber alle auf eine Linie.
Ich habs jetzt mit vier Methoden versucht, aber alle erzeugen das selbe Ergebnis.
In der MEthode FormResize rufe ich schon randomize auf.
ich hoffe ihr könnt mir weiterhelfen.
Anbei ist mein QT mit den drei Möglichkeiten die ich bereits ausprobiert hab.
Vielen dank im vorraus!

mfg
Spezi

Delphi-Quellcode:
 Punkt : Array of Array of Integer;

...

for i:=0 to High(Muenze) do
  begin
    Punkt[i][0]:=round(random((25)+Paintbox1.Width));
    Punkt[i][0]:=round(random((25)+Paintbox1.Height)); (*
    Punkt[i][0]:=round(random*(Paintbox1.Width-50)+25);
    Punkt[i][1]:=round(random*(Paintbox1.Height-50)+25);(*
    Punkt[i][0]:=round(Math.RandomRange(10,Paintbox1.Width-30));
    Punkt[i][1]:=round(Math.RandomRange(10,Paintbox1.Height-30));*)
  end;

lbccaleb 8. Nov 2010 17:30

AW: Problem mit Zufallszahlen
 
Zitat:

Zitat von Spezi (Beitrag 1060407)
...
In der MEthode FormResize rufe ich schon randomize auf.
...

Wieso in OnResize?

Besser ist wohl OnCreate...

mkinzler 8. Nov 2010 17:36

AW: Problem mit Zufallszahlen
 
Randomize setzt den Zufallsgenerator zurück. wenn du ihn kurz nacheinander öfters initilisierts besteht die Gefahr, dass immer die gleichen Zufallszahlen generiert werden

Spezi 8. Nov 2010 17:49

AW: Problem mit Zufallszahlen
 
mhm... ich hab es jetzt mal ins FormCreate geschrieben, leider ändert sich am Bild nix...
Die Punkte liegen immer noch auf einer Linie.

shmia 8. Nov 2010 17:56

AW: Problem mit Zufallszahlen
 
Wieso verwendest du eigentlich nicht den Typ TPoint?
Mehrdimensionale Arrays sollte man falls möglich vermeiden.
Nicht immer ist sofort zu erkennen, welche Dimension in welche Richtung geht.

Delphi-Quellcode:
type
  TPunktArray = Array of TPoint;
var
  Punkte : TPunktArray;

for i:=0 to High(Muenze) do
  begin
    Punkte[i].X :=round(random((25)+Paintbox1.Width));
    Punkte[i].Y :=round(random((25)+Paintbox1.Height));

Bummi 8. Nov 2010 18:12

AW: Problem mit Zufallszahlen
 
Klingt als ob Du in X und Y bei Pixels das gleiche schreibst.

BUG 8. Nov 2010 18:36

AW: Problem mit Zufallszahlen
 
Delphi-Quellcode:
// ...
Punkt[i][0]:=round(random((25)+Paintbox1.Width));
Punkt[i][0]:=round(random((25)+Paintbox1.Height)); // <-- zweimal x gesetzt
// ...
Vielleicht passiert dir der gleiche Fehler beim Zeichnen?

Sir Rufo 8. Nov 2010 20:44

AW: Problem mit Zufallszahlen
 
Zitat:

Zitat von lbccaleb;
Zitat:

Zitat von Spezi;
...
In der MEthode FormResize rufe ich schon randomize auf.
...

Wieso in OnResize?

Besser ist wohl OnCreate...

Wie kommt man eigentlich auf das schmale Brett
Delphi-Quellcode:
randomize
im OnCreate eines Formulars aufzurufen. Es sollte nur einmal pro Anwendung aufgerufen werden.

Und welche Stelle wird in einer Anwendung nur einmal aufgerufen?

Delphi-Quellcode:
program FooPrg;

...

begin
  Randomize;
  ...
end.
Nirgendwo anders würde ich das platzieren

mkinzler 8. Nov 2010 20:47

AW: Problem mit Zufallszahlen
 
Im onCreate des Hauptformulares wäre es im Notfall auch möglich.

Sir Rufo 8. Nov 2010 20:49

AW: Problem mit Zufallszahlen
 
Zitat:

Zitat von mkinzler;
Im onCreate des Hauptformulares wäre es im Notfall auch möglich.

Im Notfall kann ich das Licht auch über den Sicherungskasten ausmachen, aber der Schalter ist doch wesentlich bequemer und genau dafür vorgesehen und garantiert ohne Nebeneffekte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:36 Uhr.
Seite 1 von 2  1 2      

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