/* * GNPA.H * Auteurs: Lehmer (algorithme), Billy T. (codage en C), PSY (optimisation). * DerniŠre r‚vision: 2 mai 1994 * But: G‚narateur de Nombres Pseudo-Al‚atoires. */ #ifndef __GNPA_H #define __GNPA_H #include #include //time #define MULTIPLICATEUR 16807L #define MODULE 2147483647L #define QUOTIENT 127773L #define RESTE 2836L #define MINRANDOM 0 #define Randomize() Ran(-1L) /*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*/ float Ran(long semence) /*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*/ { static long z; if(semence<0L) z=(unsigned long)(time(&semence)%(MODULE-1)+1); else if(semence>0L) z=semence; if((z=MULTIPLICATEUR*(z%QUOTIENT) - RESTE*(long)(z/QUOTIENT)) <= 0L) z+=MODULE; return((float)z / (float)MODULE); } /*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*/ int Random(int MAXRANDOM) /*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*/ { return( (int)( MINRANDOM + Ran(0L) * (MAXRANDOM-MINRANDOM+1) ) ); } #endif