Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zufälliger Integer-Wert zwischen zwei zahlen (https://www.delphipraxis.net/22872-zufaelliger-integer-wert-zwischen-zwei-zahlen.html)

eroe 25. Mai 2004 23:48

Re: Zufälliger Integer-Wert zwischen zwei zahlen
 
Im Endeffekt wollten dir die ganzen Delphi-Cracks hier nur sagen, dass du mit der Funktion

Delphi-Quellcode:
randomize;
den Zufallsgenerator praktisch initialisierst und mit der Funktion

Delphi-Quellcode:
random(bereich)+minimum;
den Bereich angibst, in dem die Zahl liegen soll .. Weiterhin wird vom Minimum ab gezählt, sprich, wenn du eine Zahl zwischen 100 und 200 haben willst (das sind 100 Zahlen --> bereich = 100) nimmst du folgenden Befehl :

Delphi-Quellcode:
random(100)+101; // ja, eigentlich müsste das Minimum 100 sein, jedoch hat Delphi doch seine Standard-Krankheit dass immer und überall von 0 ab gezählt wird, nicht von 1 ;)

Stimmts Jungs ? :D

Pseudemys Nelsoni 26. Mai 2004 09:10

Re: Zufälliger Integer-Wert zwischen zwei zahlen
 
wie soll das denn gehen mit + minimum?

Sagen wir mal ich habe es so:

Delphi-Quellcode:
procedure irgendwas;
var
  Minimum, Maximum: integer;
  Ergebnis: integer;
begin
  Randomize;
  Minimum := 20;
  Maximum := 100;
  Ergebnis := Random(Maximum)+Minimum;
end;
So, toll, was ist wenn Random(Maximum) bereits 90 rauskommt? dann wird Minimum(20) dazugerechnet, und dann ist es ÜBER dem Maximum, nämlich 110.... :roll:


Zitat:

doch für was steht das Succ
Succ(Successor) gibt dir den Nachfolger eines Elements im Typ. Pred gibt dir den Vorgänger

Matze 26. Mai 2004 09:11

Re: Zufälliger Integer-Wert zwischen zwei zahlen
 
Zitat:

Zitat von Stevie
Delphi-Quellcode:
Random(Succ(High-Low)) + Low;

Wenn, dann geht es so. ;)

yankee 26. Mai 2004 09:54

Re: Zufälliger Integer-Wert zwischen zwei zahlen
 
Ach, hör mal: Die Funktion Random(x) liefert dir einen zufälligen Wert. Dieser Wert ist >=0 und <x.
Wenn du jetzt eine Zahl haben willst, zwischen 80 und 100, dann lässt du dir einfach eine Zufallszahl zwischen 0 und 20 ausgeben und addierst am Ende noch 80 hinzu.

Stevie 26. Mai 2004 10:00

Re: Zufälliger Integer-Wert zwischen zwei zahlen
 
Zitat:

Zitat von yankee
Ach, hör mal: Die Funktion Random(x) liefert dir einen zufälligen Wert. Dieser Wert ist >=0 und <x.
Wenn du jetzt eine Zahl haben willst, zwischen 80 und 100, dann lässt du dir einfach eine Zufallszahl zwischen 0 und 20 ausgeben und addierst am Ende noch 80 hinzu.

Was meinst du denn, was
Delphi-Quellcode:
Random(Succ(High-Low)) + Low;
macht? :lol:
Wenn du also Random(20) eingibst, was kommt raus? Richtig, Zahlen im Bereich von 0-19, deshalb Succ (Nachfolger) davon plus der untere Wert.

iaby 26. Mai 2004 10:18

Re: Zufälliger Integer-Wert zwischen zwei zahlen
 
Delphi-Quellcode:
function zahl(von, bis: integer): integer;
begin
result:= random(bis - (von + 1)) + von + 1;
end;
funkt nur, wenn "von" kleiner als "bis" ist.
kannst ja noch ne abfrage reinmachen.
rarndomize dann halt im onCreate oder so.

gruss,
iaby

Stevie 26. Mai 2004 10:25

Re: Zufälliger Integer-Wert zwischen zwei zahlen
 
Zitat:

Zitat von sakura
Und ab Delphi 6

Delphi-Quellcode:
uses
  Math;

...
// function RandomRange(const AFrom, ATo: Integer): Integer;
Wert := RandomRange(1000, 2000);
...:cat:...

Und hier die Definition dieser Funktion:
Delphi-Quellcode:
function RandomRange(const AFrom, ATo: Integer): Integer;
begin
  if AFrom > ATo then
    Result := Random(AFrom - ATo) + ATo
  else
    Result := Random(ATo - AFrom) + AFrom;
end;

yankee 26. Mai 2004 10:35

Re: Zufälliger Integer-Wert zwischen zwei zahlen
 
@Stevie Ist ja gut, ich wollte es ja nur verständlicher darstellen...

Stevie 26. Mai 2004 10:39

Re: Zufälliger Integer-Wert zwischen zwei zahlen
 
Zitat:

Zitat von yankee
@Stevie Ist ja gut, ich wollte es ja nur verständlicher darstellen...

Ich wollte nur vermeiden, dass das +/-1-Problem auftaucht, hatte ich schon oft: "Da kommt ja überhaupt nie 20 raus, obwohl ich Random(20) eingegeben habe!" :wall: :wink:


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

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 by Thomas Breitkreuz