derTiroler schrieb:
@Morgoth
ich kapier leider nichts..
OK, mal Schritt für Schritt. Der Einfachheit halber beschränke ich das mal auf 4-Bit.
1.) Zwei Zahlen erzeugen, z. B. 1001 u. 1011
------hier sollte die Schleife beginnen------
2.) Beide Zahlen XOR-Verknüpfen: 0010
3.) Dieses Ergebnis XOR mit der aktuellen Zeit verknüpfen
4.) Dieses Ergebnis in srand() verwenden
5.) Bitshift nach links: Zahl 1 um eine Stelle, Zahl 2 um drei Stellen; die vorne rausgeworfenen Ziffern müssen hinten wieder reingesteckt werden: Zahl 1: 0011 Zahl 2: 1101
-----hier beginnt die Schleife wieder von vorne--------
In diesem Beispiel durchlaufen die beiden Zahlen also die folgenden Zustände:
Zahl 1 Zahl 2 XOR
1001 1011 0010
0011 1101 1110
0110 1110 1000
1100 0111 1011
1001 1011 0010
Mehr geht mit 4-Bit nicht, schon nach 4 Bitshifts kommt wieder das gleiche raus, weil Zahl 1 um 4 Stellen, Zahl 2 um 4*3=12 Stellen, also ein ganzzahliges Vielfaches von 4, verschoben wurde. Bei 32-Bittern ist das natürlich nicht so häufig, man kann auch errechnen, wann das Ergebnis optimal ist. Man kann auch mit den Verschiebungsverhältnissen experimentieren, hier wäre vielleicht eines von 3:2 hilfreich. Ich hab es mit 3:1 gemacht, und es war hinreichend zufällig.
Gruß
Morgoth