#include /* Exemple d'utilisation du generateur ran0 de Numerical Recipes */ /* Notez bien: La variable seed et son pointeur ne doivent pas être */ /* explicitement modifies en cours d'execution! */ int main(void) { float ran0(long *idum) ; /* decl. fonction avec pointeur en argument */ long *p_seed ; /* definition d'un pointeur */ long seed=2345 ; int k ; float r ; p_seed=&seed ; /* association pointeur-variable */ for (k=0 ; k<20 ; k++) { r=ran0(p_seed) ; /* Appel avec NOM du pointeur */ printf ("\n%f",r) ; } } #define IA 16807 #define IM 2147483647 #define AM (1.0/IM) #define IQ 127773 #define IR 2836 #define MASK 123459876 /* Generateur ran0 de Numerical recipes in C (2eme ed. 1992) */ float ran0 (long *idum) { long k ; float ans ; *idum ^= MASK ; k=(*idum)/IQ ; *idum=IA*(*idum-k*IQ)-IR*k ; if (*idum < 0) *idum += IM; ans=AM*(*idum) ; *idum ^= MASK ; return ans ; }