Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Random-Frage (https://www.delphipraxis.net/118522-random-frage.html)

Spiderpig_GER_15 9. Aug 2008 11:33


Random-Frage
 
Hi

Ich habe eine Frage zu random.
Delphi-Quellcode:
random(5);
bedeutet das er zufällig eine folgender Zahlen auswählt:
0;1;2;3;4

ist es möglich,
a) dass man irgendwie eine Zahlenspanne vorgibt, also dass man sagen kann, bitte eine zufällige Zahl zwischen 2 und 5(und nicht nur zwischen null und 5) --- Und damit meine ich nicht den Trick das man einfach: random(3) + 2 schreibt)

b) kann man ausnahmen hinzufügen? z.B. random(5) ausser 3?

MfG
Spiderpig

Larsi 9. Aug 2008 11:35

Re: Random-Frage
 
Ja kann man, guck mal in der Code lib.

grenzgaenger 9. Aug 2008 11:37

Re: Random-Frage
 
Zitat:

Zitat von Spiderpig_GER_15
Hi

Ich habe eine Frage zu random.
Delphi-Quellcode:
random(5);
bedeutet das er zufällig eine folgender Zahlen auswählt:
0;1;2;3;4

ist es möglich,
a) dass man irgendwie eine Zahlenspanne vorgibt, also dass man sagen kann, bitte eine zufällige Zahl zwischen 2 und 5(und nicht nur zwischen null und 5) --- Und damit meine ich nicht den Trick das man einfach: random(3) + 2 schreibt)

b) kann man ausnahmen hinzufügen? z.B. random(5) ausser 3?

MfG
Spiderpig

zu a) das ist kein trick, sondern so wird es gemacht.
zu b) nein

GG

Spiderpig_GER_15 9. Aug 2008 11:44

Re: Random-Frage
 
zu a) Ist ja eigentlich egal, es gibt ja diese möglichkeit

zu b) schade :cry: :cry:

aber vielleicht hat ja jemand eine Idee wie man das trotzdem machen kann ohne zuu viel aufwand

Mikescher 9. Aug 2008 11:46

Re: Random-Frage
 
zu b) kannst du einfach einen Array mit den Zahlen die du auswählen willst zum Beispiel

1,3,4,5

und dann zufällig einer von diesen mit random(4) auswählen

--> so mache ich es immer :zwinker:

FAlter 9. Aug 2008 11:47

Re: Random-Frage
 
Hi,

- einfachste Lösung: neue Zufallszahl suchen bis die Ausnahme nicht mehr gilt (Achtung: wenn "zufällig" immer wieder diese Zahl kommt, kann dies sehr lange dauern.)

- andere Lösung: Ein Array nehmen, in dem nur die erlaubten Zahlen drin stehen, und Zugriff über Index.

Mfg
FAlter

grenzgaenger 9. Aug 2008 11:50

Re: Random-Frage
 
klar, kannst 'ne kleine abfrage machen und wenn die zahl drin ist, ggf. wieder holen oder du schiebst dir die zahlen in ne liste, wirfst raus, was du nicht brauchst und generierst mit random den index auf die liste.


kannst ja hier mal gucken

Spiderpig_GER_15 9. Aug 2008 12:00

Re: Random-Frage
 
Danke :dp:


Wenn noch andere Leute wissen wollen wie man es machen kann, hier hab ich den Code dafür, ich find so ist es am einfachsten:

Delphi-Quellcode:
i:=random(10);
repeat
  k:=random(10);
until k <> i;
und schon hat man zwei Variablen i und k die mit verschiedenen Zufallszahlen zwischen null und 9 versehen sind :)

mr_emre_d 9. Aug 2008 15:41

Re: Random-Frage
 
und hier ne function
Code:
function Random(rFrom, rTo: Integer; const rWithOut: Array of Integer ): Integer; overload;
var
  i: Integer;
  nFlag: Boolean;
begin
  repeat
    nFLag := True;
    Result := system.Random( rTo - rFrom + 1 ) + rFrom;
    for i:= low(rWithOut) to high(rWithOut) do
      if Result = integer(rWithOut[i]) then
      begin
        nFlag := False;
        break;
      end;
  until nFlag;
end;

// evt. Auruf:
random( 3, 5, [1,2,3,4] ) );
Wäre vlt. was für die Code-Library ? hehe

:wink:

Klaus01 9. Aug 2008 16:37

Re: Random-Frage
 
oder man nutzt gleich dieses hier:

Zitat:

Zitat von DelphiHilfe
RandomRange:
Returns a random integer from a specified range.

Unit
Math

Category
random number routines

function RandomRange(const AFrom, ATo: Integer): Integer;

Description

RandomRange returns a random integer from the range that extends between AFrom and ATo (inclusive). RandomRange can handle negative ranges (where AFrom is greater than ATo).

To initialize the random number generator, add a single call Randomize or assign a value to the RandSeed variable before making any calls to RandomRange.

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:57 Uhr.
Seite 1 von 2  1 2      

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