![]() |
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: ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:10 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