/*** * test3 * * Plot slices of some random numbers triples. * ***/ #include #include #include #include "jims1Rand.h" #define SYSRAND 0 #define JIM1RAND 1 // ----------------------------------------------------- // This generates triples (x,y,z) of randoms, and prints // x and y if z is in the given slize. // Inputs are // seed an unsigned int to initialize the generator // N number of randoms to look at // minZ, maxZ slice bounds // RandMax randoms are 0..(RandMax-1) // theSrand() function which initialized the generator // theRand() function to return the next random // void printRandomSlice( int seed, int N, double minZ, double maxZ, int RandMax, void theSrand(unsigned int), int theRand() ){ int i, r; double ITER_MAX = 1.0e6; double iter; double x,y,z; theSrand(seed); i=0; iter=0.0; while (iminZ) && (z=ITER_MAX){ printf(" -- ITERATION LIMIT = %f hit ------\n", ITER_MAX); } } // ------------------------------------------------------------ void printHelpAndExit(char* programName){ printf("Usage: %s randRoutine nPoints zMin zMax \n", programName); printf(" with randRoutine : (int) 0=>rand(), 1=>jims1Rand() \n"); printf(" nPoints : (int) the number of randoms to output.\n"); printf(" zMin, zMax : (double) >0.0, <1.0 boundries of slice.\n"); exit(0); } // ------------------------------------------------------------ int string2integer(char* theString){ int i, answer, powerOfTen, decimalDigits, scale; scale = 1; answer = 0; powerOfTen = 1; decimalDigits = 0; for (i=strlen(theString)-1; i>=0; i--){ answer += powerOfTen*((int)theString[i] - (int)'0'); powerOfTen *= 10; } return answer; } double string2double(char* theString){ int i, decimalDigits; double answer, powerOfTen; decimalDigits = 0; answer = 0.0; powerOfTen = 1.0; for (i=strlen(theString)-1; i>=0; i--){ //printf(" i = %d, theString[i] = %c \n", i, theString[i]); if ( theString[i] == '.' ){ decimalDigits = strlen(theString)-1-i; //printf(" Just set decimalDigits = %d\n", decimalDigits); continue; } answer += powerOfTen*((int)theString[i] - (int)'0'); //printf(" answer just increased to %f\n", answer); powerOfTen *= 10.0; } while (decimalDigits > 0){ answer /= 10.0; //printf(" answer just decreased to %f\n", answer); decimalDigits--; } return answer; } // ------------------------------------------------------------ int main(int argc, char* argv[]){ int nPoints, whichFunc; int seed = 1234; double zMin, zMax; // If we've been passed too few arguments on command line, give some hints. if (argc<5){ printHelpAndExit(argv[0]); } whichFunc = string2integer(argv[1]); nPoints = string2integer(argv[2]); zMin = string2double(argv[3]); zMax = string2double(argv[4]); // printf(" whichFunc = %d \n", whichFunc); // printf(" nPoints = %d \n", nPoints); // printf(" zMin = %f \n", zMin); // printf(" zMax = %f \n", zMax); // exit(0); if ( zMin<0.0 || zMin>1.0 || zMax<0.0 || zMax>1.0 || zMax<=zMin ) { printf("Oops: zMin, zMax must be >0, <1, and zMin