#include #include #include // RNG Variables and constants const double RINV = 0.5/(1 << 31); // 0.5/(2^31) int IBM; // Variables and constants int N; int dtmax; int mini; double minr; // Arrays double * r; // Array for storing fitness values int * mins; // Array for storing which species was least fit int randIBM() { // Random integer between -2^31 and 2^31 - 1 IBM*=16807; // google: LCG - Linear Congruential Generator return IBM; } double randIBMf() { // Random number between 0 and 1, [0,1) return randIBM()*RINV + 0.5; } int main (int argc, char ** argv) { int i,j; // INITIALIZATIONS for (i = 0; i < argc; i++) { printf("%s ",argv[i]); } printf("\n"); if (argc == 1) { printf("No arguments from command line. Using default values\n"); N = 64; dtmax = 10000; } else if (argc == 3) { N = atoi(argv[1]); // First argument, number of species dtmax = atoi(argv[2]); // Second argument, number of iterations } else { printf("Invalid number of arguments from command line, aborting.\n"); exit(-1); } printf(" N = %d\n",N); printf(" dtmax = %d\n\n",dtmax); FILE * f1 = fopen("out.d","w"); // Initializing RNG IBM = 2*time(0) + 1; for (i = 0; i < 1000; i++) randIBM(); r = (double*)malloc(sizeof(double)*N); mins = (int*)malloc(sizeof(int)*dtmax); // Initialize fitness array for(i = 0; i < N; i++){ r[i] = randIBMf(); } // MAIN LOOPS for(j = 0;j < dtmax; j++){ minr = 1; for(i=0;i