Ist der Zufallsgenerator von Delphi die gleiche Berechnung wie C #, wenn derselbe Samen gefüttert wird?

8

Ich übersetze etwas Delphi-Code in c # -Code, als ich darauf stieß. Ich habe kein Umgebungs-Setup für Delphi, deshalb kann ich es nicht selbst testen.

Delphi:

%Vor%

c #:

%Vor%

Würden diese den gleichen Wert in Result setzen? Wenn nicht, irgendwelche Ideen über einen Weg, dies zu tun?

    
GluedHands 11.02.2009, 16:59
quelle

4 Antworten

16

Der Delphi PRNG ist ein deterministischer linearer kongruenter Generator mit 134775813 als a und 1 als c und gibt die hohen 32 Bits für bereichsbeschränkte Zahlen zurück. Hier ist eine Implementierung in C #, die dieselben Werte wie Delphi zurückgibt:

%Vor%     
Barry Kelly 12.02.2009, 13:45
quelle
7

Sicher nicht, weil sie verschiedene RNGs verwenden. Sie könnten vielleicht einen RNG von der Windows API verwenden, Ihren eigenen RNG erstellen oder eine RNG-Bibliothek verwenden, um dies zu erreichen.

Eine andere Möglichkeit, um sicherzustellen, dass Ihr RNG die gleichen Zahlen für einen gegebenen Seed erzeugt, wäre, eine DLL zu schreiben und sie sowohl für Delphi als auch für C # zu verwenden.

Übrigens, wenn Sie selbst einen Zufallszahlengenerator programmieren möchten, ist Wikipedia ein guter Ausgangspunkt, um die Namen zu erhalten von einigen üblichen Generatoren. Nachdem Sie fertig sind, sollten Sie es durch einen statistischen Test laufen lassen, um sicherzustellen, dass es "zufällig" genug für Sie ist / p>     

schnaader 11.02.2009 17:02
quelle
3

Nur einige Ergebnisse, die Delphi 2009 und die ersten 10 jedes Samens verwenden:

%Vor%

Ich sehe ein Muster; -).

    
Toon Krijthe 11.02.2009 17:06
quelle
1

Für Java-Entwickler

%Vor%     
ArokLair 18.08.2011 15:20
quelle

Tags und Links