.. "nur" 50^30 (denn es ist ja egal, ob das erste oder zweite Vorkommen des Buchstaben "gewürfelt" wird, der Buchstabe selber ist relevant)
Völlig richtig!
Zitat:
Da fällt mir ein: Hast Du irgendwo Code gefunden, der den RNG initialisiert der da benutzt wird?
Es gibt keine Initialisierung. Der RNG sieht so aus:
Code:
unsigned int GetCpuTimeCode()
{
unsigned __int64 tick;
tick = RDTSC(); // Assembler für GetTickCount;
return (16807 * (HIDWORD(tick) ^ tick) % 0x1F31D
- 2836 * (HIDWORD(tick) ^ tick) / 0x1F31D) % 0x186A0;
}
Schau mal bitte hier, OldGrumpy:
Park-Miller-Carta Pseudo-Random Number Generator
Update:
Der RNG sieht in Delphi so aus: (Danke an Yvonne fürs schreiben und recherchieren
)
Delphi-Quellcode:
function GetRandomNumber: DWORD;
// http://www.cems.uwe.ac.uk/~irjohnso/coursenotes/ufeen8-15-m/p1192-parkmiller.pdf
// Seite 1195 (function Random Integer Version 2)
function RDTSC: DWORD;
begin
asm
dw $310F
// = rdtsc
end;
end;
const
a = 16807;
q = 127773;
r = 2836;
var
t, hi, lo, seed: DWORD;
begin
t := RDTSC;
seed:= t
and $0000FFFF;
//= (t and $FFFF0000) xor t;
hi := seed
div q;
lo := seed
mod q;
Result := (a * lo - r * hi)
mod 10000;
end;