![]() |
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? |
Einfach den Anfangswert nachher dazu addieren!
|
Das Ganze im Code:
Code:
function Zufallszahl(Von, Bis: Integer): Integer;
begin Result := Random(Succ(Bis - Von)) + Von; end; |
Als Ergänzung zum Code von sakura:
Die Funktion liefert Zufallszahlen in dem Bereich [von..bis[ oder von <= x < bis. |
Zitat:
[von..bis] oder von <= x <= bis |
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: . |
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:
Beschreibung:
function RandomRange(const AFrom, ATo: Integer): Integer;
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 |
Das geht auch mit Random:
Code:
Sorry bei mir würde nur der letze Post angezeigt :shock: :nerd:
var
Start,Stop,Zuf:Integer; begin Zuf := Random(Stop-Start)+Start; |
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 :?: :? |
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: ![]() |
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 |
Re: Zufallsgenerator - Bereich festlegen
Vielleicht so:
Delphi-Quellcode:
// Kommentar verbessert...
x:= random(3)+(Ziel-1); // Random(3) gibt 0,1 oder 2 aus
|
Re: Zufallsgenerator - Bereich festlegen
der Code stimmt schon ... aber der Kommentar :gruebel
Zitat:
also für Random(2) = 0, oder 1 |
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) ; |
Re: Zufallsgenerator - Bereich festlegen
Zitat:
Delphi-Quellcode:
Schließlich ist 10 - (-10) = 20 und + (-10) = -10.
x := Random(Succ(20)) -10 ;
y := Random(Succ(20)) -10 ; Damit erspart man sich Rechenzeit (ja ich weiß das es nicht viel ist) außerdem ist es übersichtlicher. |
Re: Zufallsgenerator - Bereich festlegen
*Räusper*
Delphi-Quellcode:
:wink:
x := Random(21) -10 ;
y := Random(21) -10 ; |
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:
:P
x := Random(21) -10 ;
y := x ; |
Re: Zufallsgenerator - Bereich festlegen
Was heißt bzw. bewirkt und bedeutet dieses "Succ" eig.??
BYe |
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. |
Re: Zufallsgenerator - Bereich festlegen
Zitat:
Gruß Jonas |
Re: Zufallsgenerator - Bereich festlegen
Zitat:
|
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