AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Zufallszahl erzeugen in delphi 2005??

Zufallszahl erzeugen in delphi 2005??

Ein Thema von sandrocm · begonnen am 28. Sep 2005 · letzter Beitrag vom 28. Sep 2005
Antwort Antwort
sandrocm

Registriert seit: 27. Okt 2003
27 Beiträge
 
#1

Zufallszahl erzeugen in delphi 2005??

  Alt 28. Sep 2005, 09:08
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]
  Mit Zitat antworten Zitat
Benutzerbild von Kroko1999
Kroko1999

Registriert seit: 21. Apr 2005
Ort: Spremberg
455 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Zufallszahl erzeugen in delphi 2005??

  Alt 28. Sep 2005, 09:12
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
Randomize; auf
Da sprach der Stumme zum Blinden: "Du wirst sehen ..."
oder
Wer lesen kann, ist klar im Vorteil!
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Zufallszahl erzeugen in delphi 2005??

  Alt 28. Sep 2005, 09:14
Zitat von Kroko1999:
oder du ruft kein
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.
  Mit Zitat antworten Zitat
DevilsCamp
(Gast)

n/a Beiträge
 
#4

Re: Zufallszahl erzeugen in delphi 2005??

  Alt 28. Sep 2005, 10:11
Zitat von Matze:
Zitat von Kroko1999:
oder du ruft kein
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.
  Mit Zitat antworten Zitat
Phistev
(Gast)

n/a Beiträge
 
#5

Re: Zufallszahl erzeugen in delphi 2005??

  Alt 28. Sep 2005, 10:12
Bei Delphi 2005 ist RandomRange schon eingebaut (Unit Math), wieso also die Mühe?
  Mit Zitat antworten Zitat
Benutzerbild von Chegga
Chegga

Registriert seit: 5. Nov 2004
Ort: Kirchheim
453 Beiträge
 
Delphi 7 Architect
 
#6

Re: Zufallszahl erzeugen in delphi 2005??

  Alt 28. Sep 2005, 13:21
Hi,

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 ) aufgeklärt.

MfG Marc
Marc P.
Grüße aus Kirchheim Teck
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#7

Re: Zufallszahl erzeugen in delphi 2005??

  Alt 28. Sep 2005, 18:29
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
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#8

Re: Zufallszahl erzeugen in delphi 2005??

  Alt 28. Sep 2005, 18:33
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
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Zufallszahl erzeugen in delphi 2005??

  Alt 28. Sep 2005, 18:54
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.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:21 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