Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Zufallszahl erzeugen in delphi 2005?? (https://www.delphipraxis.net/54106-zufallszahl-erzeugen-delphi-2005-a.html)

sandrocm 28. Sep 2005 08:08


Zufallszahl erzeugen in delphi 2005??
 
Hi Leute ichhabe gerade auf Delphi 2005 umgestellt und versuche einezufalls zahl dort zu erzeugen....

Delphi-Quellcode:
function Tbasis.RandomRange(min, max: integer): integer;
begin
  result := 0;
  if min > max then
    exit;
  result := random(max - min + 1) + min;  
end;
Aber egal was ich da als min und max rein gebe... es kommt immer 1 als wert raus?????

Hat jemand eineAhnung????

[edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit]

Kroko1999 28. Sep 2005 08:12

Re: Zufallszahl erzeugen in delphi 2005??
 
vielleicht liegt es an den Namen
Delphi-Quellcode:
function Tbasis.RandomRange(AMin, AMax: Integer): Integer;
begin
  Result := 0;
  if AMin <=AMax then Result := Random(AMax - AMin + 1) + AMin;
end;
oder du ruft kein
Delphi-Quellcode:
Randomize;
auf

Matze 28. Sep 2005 08:14

Re: Zufallszahl erzeugen in delphi 2005??
 
Zitat:

Zitat von Kroko1999
oder du ruft kein
Delphi-Quellcode:
Randomize;
auf

Daran kann es nicht liegen, denn Randomize wäre die Reihenfolge halt bei jedem Programmstart die gleiche. ;)

Bei mir geht es so ohne Probleme:

Delphi-Quellcode:
function RandomRange(min, max: integer): integer;
begin
  result := 0;
  if min > max then
    exit;
  result := random(max - min + 1) + min;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(IntToStr(RandomRange(4, 7));
end;

Nachtrag: Bitte den Code mit [delphi]-Tags umschließen.

DevilsCamp 28. Sep 2005 09:11

Re: Zufallszahl erzeugen in delphi 2005??
 
Zitat:

Zitat von Matze
Zitat:

Zitat von Kroko1999
oder du ruft kein
Delphi-Quellcode:
Randomize;
auf

Daran kann es nicht liegen, denn Randomize wäre die Reihenfolge halt bei jedem Programmstart die gleiche. ;)

Wenn ich das jetzt richtig verstanden habe, dann meinst, dass durch Randomize immer die selben Zufallszahlen entstehen.

Dann ist das definitv FALSCH!!

Laut Delphi OH initialisiert Randomize den integrierten Generator mit einem, aus der Systemzeit abgeleiteten, zufälligen Wert.
Die Reihenfolge der zufälligen Zahlen wäre damit also nur dann immer gleich, wenn der Wert, den Randomize nutzt, immer der gleiche wäre (da deine Systemuhr allerdings nicht still-steht, dürfte dies sehr unwahrscheinlich sein).

Du solltest also Randomize einmal starten (am besten im OnCreate-Ereignis des Forms), damit du bei jedem Start neue "Zufallswerte" bekommst.

Phistev 28. Sep 2005 09:12

Re: Zufallszahl erzeugen in delphi 2005??
 
Bei Delphi 2005 ist RandomRange schon eingebaut (Unit Math), wieso also die Mühe?

Chegga 28. Sep 2005 12:21

Re: Zufallszahl erzeugen in delphi 2005??
 
Hi,

Zitat:

Zitat von DevilsCamp
Laut Delphi OH initialisiert Randomize den integrierten Generator mit einem, aus der Systemzeit abgeleiteten, zufälligen Wert.
Die Reihenfolge der zufälligen Zahlen wäre damit also nur dann immer gleich, wenn der Wert, den Randomize nutzt, immer der gleiche wäre (da deine Systemuhr allerdings nicht still-steht, dürfte dies sehr unwahrscheinlich sein).

Schau mal hier vorbei:
Random

Hagen hat uns (mal wieder :zwinker: ) aufgeklärt.

MfG Marc

negaH 28. Sep 2005 17:29

Re: Zufallszahl erzeugen in delphi 2005??
 
Zitat:

da deine Systemuhr allerdings nicht still-steht, dürfte dies sehr unwahrscheinlich sein...
Das hängt von der Sichtweise ab. Rufst du Randomize + Random() innerhalb einer Millisekunde 1000 mal auf und die Systemzeit hat sich in dieser Millisekunde eben nicht verändert, weil sie nämlich nur Millisekunden genau arbeitet, dann erzeugt man tatsächlich 1000 mal die gleiche "Zufalls"-Zahl.

Randomize sollte also nur einmalig zum Programstart aufgerufen werden wenn überhaupt.

Übrigens in 1 Millisekunde = 1/1000 Sekunde führen 2GHz Rechner ca. 2 Millionen Befehle aus, es ist also ein leichtes 1000 mal in der Millisekunde Randomize + Random aufzurufen.

Gruß Hagen

negaH 28. Sep 2005 17:33

Re: Zufallszahl erzeugen in delphi 2005??
 
Zitat:

Laut Delphi OH initialisiert Randomize den integrierten Generator mit einem, aus der Systemzeit abgeleiteten, zufälligen Wert.
Glaube kaum das die OH aussagt das die Systemzeit zufällig ist. Und egal wie man aus der Systemzeit einen Wert ableitet, also per Formel, es wird dadurch leider nicht zufälliger.

Gruß Hagen

Matze 28. Sep 2005 17:54

Re: Zufallszahl erzeugen in delphi 2005??
 
Zitat:

Zitat von DevilsCamp
Wenn ich das jetzt richtig verstanden habe, dann meinst, dass durch Randomize immer die selben Zufallszahlen entstehen.

Dann ist das definitv FALSCH!!

Tatsache, so wie ich das geschrieben habe ist es falsch. Ich habe das Wort "ohne" vergessen. :oops:


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