Files
uni/ws2019/ipi/uebungen/cpp_headers/Zufall.cc
T

25 lines
540 B
C++

class Zufall {
public:
Zufall (unsigned int anfang);
unsigned int ziehe_zahl ();
private:
unsigned int x;
} ;
Zufall::Zufall (unsigned int anfang) {
x = anfang;
}
// Implementierung ohne lange Arithmetik
// siehe Numerical Recipes, Kap. 7.
unsigned int Zufall::ziehe_zahl ()
{
// a = 7^5, m = 2^31-1
unsigned int ia = 16807, im = 2147483647;
unsigned int iq = 127773, ir = 2836;
unsigned int k = x/iq;
x = ia*(x-k*iq)-ir*k;
if (x<0) x = x+im;
return x;
}