![]() |
Delphi-Version: 2009
Zufallszahlenalgorithmus
Ich bin auf der Suche nach ein paar Informationen, nach welchem Algorithmus Delphi mit der Funktion Random Zufallszahlen erzeugt. Dass es ein deterministisches Pseudo-Zufallszahl-Verfahren ist, hab ich noch relativ leicht rausbekommen (gleicher RandSeed --> gleiche Zufallszahlen in gleicher Reihenfolge). Die Delphi-Hilfe gibt leider auch nicht allzu viel Info her. Weiß jemand etwas mehr darüber?
|
AW: Zufallszahlenalgorithmus
Effektiv wird bei jedem Aufruf von random etc RandSeed := $08088405*RandSeed + 1; berechnet (in 32-Bit-Arithmetik).
|
AW: Zufallszahlenalgorithmus
Zitat:
|
AW: Zufallszahlenalgorithmus
Die Funktion Random steht doch als ASM-Quelltext in der Unit System?...
|
AW: Zufallszahlenalgorithmus
Zitat:
(gut, auch wenn es da als Assembler dasteht) Zitat:
Dieser Zufallswert wird als als 0..MaxInt behandelt und dann auf 0..(x-1) runterskaliert. [edit] @blackfin: zustimm |
AW: Zufallszahlenalgorithmus
Zitat:
Danke :thumb: |
AW: Zufallszahlenalgorithmus
Aus der RTL. Der andere Teil ist etwas kitzliger, hier ein Äquivalent für Delhis mit int64. In der RTL wird Assembler benutzt. Man nimmt die höheren Bits, weil die zufälliger sind.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var a,b: longint; const ARange = 100000; begin a := random(ARange); b := (int64(ARange) * RandSeed) shr 32; if b<0 then b := b+ARange; button1.Caption := InttoHex(a,8) + ' / ' + IntToHex(b,8); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:14 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