![]() |
Random mit Dec
hallo,
ich hab folgendes problem, ich möchte mir mit dec eine zufalls zahl ausgeben lassen und zwar so wie mit dem random von delphi. im moment mach ich das so, was aber sehr unschön ist, hat jemand eine bessere idee.
Delphi-Quellcode:
für alle tips wär ich dankbar.
function GetRandom(range: Byte): integer;
var i: Byte; begin Result := -1; RandomSeed; repeat RandomBuffer(i, sizeof(i)); until (i < range) and (i <> -1); Result := i; end; Gruss, cookie |
Re: Random mit Dec
Delphi-Quellcode:
function GetRandom(range: Byte): integer;
var i: Cardinal; begin // RandomSeed; // WEG, darf nur einmal aufgerufen werden RandomBuffer(i, sizeof(i)); Result := i mod range; end; |
Re: Random mit Dec
vielen dank erst mal. :-D
warum darf ich randomseed nur einmal aufrufen? |
Re: Random mit Dec
Weil sich die Zufallszahlen sonst wiederholen würden
|
Re: Random mit Dec
der zufallsgenerator wird doch mit der aktuellen systemzeit bzw. anderen zufalls daten initialisiert, wie kann sich dann da was wiederholen? die voraussetzungen sind doch völlig anders. macht nicht gerade das nen cryptographisch sicheren random generator aus, dass sowas nicht passiert?
|
Re: Random mit Dec
Von Randomize weiß ich, dass man es nur einmal aufrufen sollte. Wie das mit RandomSeed ist, kann ich im Moment nicht sagen, da keine Delphihilfe zur Verfügung.
|
Re: Random mit Dec
Ich sitze gerade nicht am Delphi-Rechner, aber ich würde sagen: Im Zweifel macht ein Versuch kluch ...
|
Re: Random mit Dec
es geht hier um das randomseed von dec 5.2. das ist doch ein yarrow random generator, da der cryptoraphisch sicher ist, sollte das eigentlich nix ausmachen. genau das unterscheidet ihn doch vom delphi randomize. oder sitze ich da einem irtum auf? :?
|
Re: Random mit Dec
Wenn man einen Zufallsgenerator hat, dann setzt man einmal den Anfangswert (Seed = Samen) und lässt ihn dann in Ruhe arbeiten.
Es spielt dabei keine Rolle, welcher Art der Zufallsgenerator ist; es ist immer das gleiche Prinzip. Wenn man immer wieder die Initialisierung neu vornimmt, dann ist ja der Zufallsgenerator ausser Kraft gesetzt. |
Re: Random mit Dec
Zitat:
|
Re: Random mit Dec
Hi,
ich würde den RandomSeed der DEC nur einmal aufrufen. Mehrfach stellt zwar technisch kein Problem dar, aber ob es die Sicherheit erhöht... Wer es theoretisch sicherer haben will, nutzt - wie oben schon genannt - echte Zufallsdaten. Dafür gibt es ein Overload der Prozedur RandomSeed mit
Delphi-Quellcode:
Wird nur RandomSeed() verwendet, wird ein pseudozufälliger Seed aus der Systemzeit und dem PerformanceCounter erzeugt. Mit einem Buffer mit echten Zufallsdaten ist das natürlich besser. Dann kann man z.B. Daten, die aus Mausbewegungen und Tastatureingaben des Benutzers erzeugt werden nutzen, so wie es bei TrueCrypt geschieht.
procedure RandomSeed(const Buffer; Size: Integer);
Gruß Assertor |
Re: Random mit Dec
jo danke für die antworten. also kann man es mehrfach aufrufen, es bringt nur nicht wirklich was.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:28 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 by Thomas Breitkreuz