Frage von FrauKoehler123, 18

Zufallsfunktion OHNE srand() und rand()?

Yo,

ich habe mal wieder eine Frage zum Thema C/C++. Es gibt in der Windows Libary ja solche Dinge wie "srand()" und "rand()". Nur jetzt habe ich mir gedacht, zum Verständnis eine eigene von Windows unabhängige Funktion zu schreiben, welche keine vordefininierten Befehle verwendet. Ich komm aber echt nicht weiter... ...hat jemand von euch eine Idee? Möglichst mit Codebeispiel : )

Danke an alle Antworten :D

Antwort
von Isendrak, 6
Es gibt in der Windows Library ja solche Dinge wie "srand()" und "rand()".

Nicht nur da... ;)

Möglichst mit Codebeispiel : )

Da hast du ;)

static long int w = 88675123;
void srand(long int seed){
w = seed;
}

// https://de.wikipedia.org/wiki/Kongruenzgenerator
const long int a=25214903917;
const long int c=11;
const long int m=281474976710656;
long int rand_lcg(){
w = (a * w + c) % m;
return w;
}

// https://de.wikipedia.org/wiki/Xorshift
static long int x = 123456789;
static long int y = 362436069;
static long int z = 521288629;
long int rand_xor(){
long int t = x ^ (x << 11);
x = y; y = z; z = w;
w ^= (w >> 19) ^ t ^ (t >> 8);
return w;
}
Antwort
von dreamerdk, 14

z.B. eine Operation mit der aktuellen Uhrzeit

Antwort
von k3ltis, 11

Pseudozufallszahlengenerator mit Random Seed (PRNG). Dieser schmackhafte Klassiker kann mit Hilfe von Schieberegistern und XOR Operationen relativ einfach implementiert werden.

Man beachte, dass die Zufallszahlen determiniert sind und das Seed immer anders wählen sollte. Außderm muss das Schieberegister lang genug wählen, damit die Periode nicht zu klein wird.

Viel Spaß 

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten