Moin allerseits,
ich brauche für eine Anwendung einen Pseudozufallszahlengenerator, der
auf allen Zielplattformen (bei gleichem Seed) die gleiche Sequenz an
Zahlen ausgibt.
Ich habe bei wikipedia den folgenden Code gefunden(leicht modifiziert):
1 | uint32_t m_w = <choose-initializer>; /* must not be zero, nor 0x464fffff */
|
2 | uint32_t m_z = <choose-initializer>; /* must not be zero, nor 0x9068ffff */
|
3 |
|
4 | uint32_t get_random()
|
5 | {
|
6 | m_z = 36969 * (m_z & 65535) + (m_z >> 16);
|
7 | m_w = 18000 * (m_w & 65535) + (m_w >> 16);
|
8 | return (m_z << 16) + m_w; /* 32-bit result */
|
9 | }
|
Mit fällt auf den ersten Blick keine Plattformabhängigkeit auf. Aber da
ich nicht alle Kombinationen testen kann, die Frage in die Runde:
Liefert diese Funktion wirklich überall die gleichen Zahlen?
Die Systeme, auf denen es funktionieren soll sind:
- Windows, Linux, MacOS
- 32 Bit / 64 Bit
- Little Endian / Big Endian