![]() |
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; |
AW: Problem mit Zufallszahlen
Zitat:
Besser ist wohl OnCreate... |
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
|
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. |
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)); |
AW: Problem mit Zufallszahlen
Klingt als ob Du in X und Y bei Pixels das gleiche schreibst.
|
AW: Problem mit Zufallszahlen
Delphi-Quellcode:
Vielleicht passiert dir der gleiche Fehler beim Zeichnen?
// ...
Punkt[i][0]:=round(random((25)+Paintbox1.Width)); Punkt[i][0]:=round(random((25)+Paintbox1.Height)); // <-- zweimal x gesetzt // ... |
AW: Problem mit Zufallszahlen
Zitat:
Delphi-Quellcode:
im OnCreate eines Formulars aufzurufen. Es sollte nur einmal pro Anwendung aufgerufen werden.
randomize
Und welche Stelle wird in einer Anwendung nur einmal aufgerufen?
Delphi-Quellcode:
Nirgendwo anders würde ich das platzieren
program FooPrg;
... begin Randomize; ... end. |
AW: Problem mit Zufallszahlen
Im onCreate des Hauptformulares wäre es im Notfall auch möglich.
|
AW: Problem mit Zufallszahlen
Zitat:
|
AW: Problem mit Zufallszahlen
Okay, ich hab jetzt mein Array aus Tponits aufgegbaut und nun funktioniert es...
Ich weiß zwar nicht so genau wiso jetzt aber immerhin klappts. Danke an alle!! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz