Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zufallsgenerator - Bereich festlegen (https://www.delphipraxis.net/598-zufallsgenerator-bereich-festlegen.html)

Traumzauberbaum 12. Aug 2002 09:46


Zufallsgenerator - Bereich festlegen
 
Mahlzeit :hello:

hat jemand nen plan, wie ich dem zufallsgenerator (random) sagen kann, dass der nich von 0 bis sonstwohin generieren soll, sondern dass er bei einem bestimmten wert anfängt, also nich schon bei null?

Tpercon 12. Aug 2002 09:55

Einfach den Anfangswert nachher dazu addieren!

sakura 12. Aug 2002 11:44

Das Ganze im Code:

Code:
function Zufallszahl(Von, Bis: Integer): Integer;
begin
  Result := Random(Succ(Bis - Von)) + Von;
end;

MrSpock 12. Aug 2002 12:52

Als Ergänzung zum Code von sakura:

Die Funktion liefert Zufallszahlen in dem Bereich

[von..bis[

oder

von <= x < bis.

sakura 12. Aug 2002 13:36

Zitat:

Zitat von MrSpock
Als Ergänzung zum Code von sakura:

Die Funktion liefert Zufallszahlen in dem Bereich

[von..bis[

oder

von <= x < bis.

Ich muss Dich enttäuschen. Der Bereich ist

[von..bis]

oder

von <= x <= bis

MrSpock 12. Aug 2002 16:44

Hallo Sakura,

aber da bin ich doch nicht enttäuscht. Das ist doch super :hello: . Da hab ich halt Bullshit (mal gucken, ob dieser Begriff automatisch wegzensiert wird) geschrieben. Und außerdem: was interessiert mich mein Geschwätz von heute morgen :mrgreen: .

Marc_Z 18. Aug 2002 10:44

Funktion bei Delphi 6.0
 
Hi,

ich habe mal nachgeguckt, ab der Version Delphi 6.0 gibt es eine
Funktion, mit der du den Bereich der Zufallszahlen eingrenzen kannst!
Dafür musst du aber noch die Unit "Math" einbinden!

Hier einmal die Syntax und die Erklärung!

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

RandomRange gibt einen zufälligen Integer-Wert im Bereich von AFrom bis ATo zurück (inklusive). RandomRange funktioniert auch mit negativen Bereichen (wenn AFrom größer als ATo ist).

Um den Zufallszahlengenerator zu initialisieren, müssen Sie vor dem Aufruf von RandomRange die Prozedur Randomize aufrufen oder der Variable RandSeed einen Wert zuweisen.


:bounce1:

Gruß Marc

RomanK 18. Aug 2002 10:57

Das geht auch mit Random:
Code:
var
Start,Stop,Zuf:Integer;
begin
Zuf := Random(Stop-Start)+Start;
Sorry bei mir würde nur der letze Post angezeigt :shock: :nerd:

hm988 22. Dez 2002 10:57

Hi,
hab das mit dem Randomize gerade auch ausprobiert, krieg ich auch hin aber wie bringe ich es jetzt fertig dass ich nicht zweimal die selben zahlen bekomme bevor alle oder die meisten zahlen im random schon dran wahren :?: :?

sakura 22. Dez 2002 11:32

Du darfst Randomize nur ein einziges Mal aufrufen.

Mechanismus: Randomize setzt die Variable RandSeed auf einen Startwert abhängig von der aktuellen Systemzeit. Diese Zeit wird durch einen internen Zähler des Computers alle 18 Millisekunden geändert, dass heisst, solange sich die Zeit, zumindest für den Computer, nicht geändert hat, wird durch Randomize die Variable RandSeed immer wieder auf den gleichen Startwert gesetzt. RandSeed wird zum Ermitteln der Zufallszahl genutzt. Da RandSeed sich aber nicht ändert, durch stetes Reset durch Randomize, bekommst Du mehrmals die gleiche "Zufallszahl".

Kurz: Randomize nur einmalig zum Programmstart aufrufen. Und schon klappts.

[edit]Danke Christian, da war natürlich ein Fehlerchen[/edit]
(Siehe: http://www.delphipraxis.net/viewtopi...asc&highlight=)

-lx- 26. Sep 2005 21:30

Re: Zufallsgenerator - Bereich festlegen
 
Hallo!

Ich hab jetzt mal dazu ne Frage:


Wie kann ich denn eine Zufallszahl generieren, die entweder -1 oder +1 von einem vorgegebenen Wert abweichen darf ?



Würde mich über nen Tipp oder en Antwort sehr freuen!:)



mfg

CYa

Nikolas 26. Sep 2005 21:36

Re: Zufallsgenerator - Bereich festlegen
 
Vielleicht so:
Delphi-Quellcode:
x:= random(3)+(Ziel-1); // Random(3) gibt 0,1 oder 2 aus
// Kommentar verbessert...

himitsu 26. Sep 2005 22:54

Re: Zufallsgenerator - Bereich festlegen
 
der Code stimmt schon ... aber der Kommentar :gruebel

Zitat:

Random(2) gibt 0,1 oder 2 aus
Random(X) gibt 0 bis X-1 aus ...
also für Random(2) = 0, oder 1

-lx- 27. Sep 2005 18:32

Re: Zufallsgenerator - Bereich festlegen
 
Danke euch. Aber ich hab es schon anders gelöst bzw. so wie oben!

Delphi-Quellcode:
x := Random(Succ(10- (-10) )) + (-10) ;
y := Random(Succ(10- (-10) )) + (-10) ;

Brainstalker 27. Sep 2005 18:59

Re: Zufallsgenerator - Bereich festlegen
 
Zitat:

Zitat von -lx-
Danke euch. Aber ich hab es schon anders gelöst bzw. so wie oben!

Delphi-Quellcode:
x := Random(Succ(10- (-10) )) + (-10) ;
y := Random(Succ(10- (-10) )) + (-10) ;

Das ganze kann man doch aber einfacher so schreiben:
Delphi-Quellcode:
x := Random(Succ(20)) -10 ;
y := Random(Succ(20)) -10 ;
Schließlich ist 10 - (-10) = 20 und + (-10) = -10.
Damit erspart man sich Rechenzeit (ja ich weiß das es nicht viel ist) außerdem ist es übersichtlicher.

Grishnak 27. Sep 2005 19:06

Re: Zufallsgenerator - Bereich festlegen
 
*Räusper*

Delphi-Quellcode:
x := Random(21) -10 ;
y := Random(21) -10 ;
:wink:

Brainstalker 27. Sep 2005 19:11

Re: Zufallsgenerator - Bereich festlegen
 
Kann man auch machen XD.
Hab ich gar net dran gedacht. Da sieht man wie gut ich Beiträge lese.

Delphi-Quellcode:
x := Random(21) -10 ;
y := x ;
:P

-lx- 27. Sep 2005 19:28

Re: Zufallsgenerator - Bereich festlegen
 
Was heißt bzw. bewirkt und bedeutet dieses "Succ" eig.??



BYe

Brainstalker 27. Sep 2005 19:45

Re: Zufallsgenerator - Bereich festlegen
 
Also Pred und Succ entsprechen Vorgänger und Nachfolger.

Das heißt:

Pred(1) = 0
Succ(1) = 2

0 ist der Vorgänger von 1.
2 ist der Nachfolger von 1.

Das ganze ist aber auch auf Listen anwendbar. Guck dir mal das Beispiel in der Delphihilfe an.

Jonas1405 30. Sep 2005 12:14

Re: Zufallsgenerator - Bereich festlegen
 
Zitat:

Zitat von Traumzauberbaum
Mahlzeit :hello:

hat jemand nen plan, wie ich dem zufallsgenerator (random) sagen kann, dass der nich von 0 bis sonstwohin generieren soll, sondern dass er bei einem bestimmten wert anfängt, also nich schon bei null?

ich meine sogar da giong doch was mit random[33..9999] oder sowatt??!! Probier mal aus!!!

Gruß Jonas

Khabarakh 30. Sep 2005 12:56

Re: Zufallsgenerator - Bereich festlegen
 
Zitat:

Zitat von Jonas1405
Zitat:

Zitat von Traumzauberbaum
Mahlzeit :hello:

hat jemand nen plan, wie ich dem zufallsgenerator (random) sagen kann, dass der nich von 0 bis sonstwohin generieren soll, sondern dass er bei einem bestimmten wert anfängt, also nich schon bei null?

ich meine sogar da giong doch was mit random[33..9999] oder sowatt??!! Probier mal aus!!!

Gruß Jonas

Wenn du die Funktion RandomRange meinst: Die wurde schon auf der ersten Seite erwähnt.


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