#include #include unsigned long seed=7; float quickdirtyrand(unsigned long *seed, long ia, long ic); /* Exercise 1.5, see README */ main(int argc, char **argv) { /* This code assumes a mantissa in a double greater than the size of an int. If this is not true on your machine, you may end up in an infinite loop */ int i; long a,c; double x,y; FILE *fp; seed=7; fp=fopen("ansixy_mod1.dat","w"); for (i=0;i<10000;i++) { a=432764376; c=32132; x=quickdirtyrand(&seed,a,c); y=quickdirtyrand(&seed,a,c); fprintf(fp,"%.10g %.10g\n",x,y); } fclose(fp); fp=fopen("ansixy_mod2.dat","w"); for (i=0;i<10000;i++) { a=436; c=322; x=quickdirtyrand(&seed,a,c); y=quickdirtyrand(&seed,a,c); fprintf(fp,"%.10g %.10g\n",x,y); } fclose(fp); fp=fopen("ansixy_mod3.dat","w"); for (i=0;i<10000;i++) { a=100076; c=132672; x=quickdirtyrand(&seed,a,c); y=quickdirtyrand(&seed,a,c); fprintf(fp,"%.10g %.10g\n",x,y); } fclose(fp); fp=fopen("ansixy_mod4.dat","w"); for (i=0;i<10000;i++) { a=4329984; c=13178; x=quickdirtyrand(&seed,a,c); y=quickdirtyrand(&seed,a,c); fprintf(fp,"%.10g %.10g\n",x,y); } fclose(fp); fp=fopen("ansixy_mod5.dat","w"); for (i=0;i<10000;i++) { a=432109; c=1232178; x=quickdirtyrand(&seed,a,c); y=quickdirtyrand(&seed,a,c); fprintf(fp,"%.10g %.10g\n",x,y); } fclose(fp); } float quickdirtyrand(unsigned long *seed, long ia, long ic) { /* long ia=106; long ic=1283; */ long im=6075; *seed = (*seed*ia + ic)%im; return((float) *seed/(float) im); }