**fig10_55.txt** /* 1*/ static const long int A = 16807; // 7^5. /* 2*/ static const long int M = 2147483647; // 2^31 - 1. /* 3*/ static const long int Q = 127773; // M / A. /* 4*/ static const long int R = 2836; // M % A. /* 5*/ class Random /* 6*/ { /* 7*/ private: /* 8*/ unsigned long int Seed; /* 9*/ public: /*10*/ Random( unsigned long int Init_Val = 1 ) : /*11*/ Seed( Init_Val ) { } /*12*/ ~Random( ) { } /*13*/ double Rand0_1( ); /*14*/ }; /*15*/ double /*16*/ Random::Rand0_1( ) /*17*/ { /*18*/ long int Tmp_Seed; /*19*/ Tmp_Seed = A * ( Seed % Q ) - R * ( Seed / Q ); /*20*/ if( Tmp_Seed >= 0 ) /*21*/ Seed = Tmp_Seed; /*22*/ else /*23*/ Seed = Tmp_Seed + M; /*24*/ return( double( Seed ) / M ); /*25*/ }