I'm using Code::Blocks to write the code and rand() function always return 0. I tried to plant the seed with srand(time(NULL)), srand(opm_get_wtime()) and at least 10 different other methods, but it does not work... Does anybody know how to fix this? The general outline of my code looks like this: Code: #include <stdio.h> #include <stdlib.h> #include <omp.h> #include <time.h> int main() { int toss; int number_in_circle = 0; int number_of_tosses = 10; double distance_squared; double x; double y; srand(time(NULL)); for (toss=0;toss<number_of_tosses;toss++) { x = rand()/RAND_MAX - 1; y = rand()/RAND_MAX - 1; printf("x=%f",x); printf("y=%f\r\n",y); distance_squared = x * x + y * y ; if ( distance_squared <= 1) number_in_circle++; } int pi_estimate = 4*number_in_circle /((double) number_of_tosses ); printf("Pi estimate: %d",pi_estimate); return 0; }

what's with the -1 there? and why isn't it in ( ) together with RAND_MAX ? also rand() returns an int, which you might want to cast to a double, so that division works as you assume it to work

Thx W1zzard! Had to change the type to int and it worked. The actual calculation is: Code: x = 2*rand()/RAND_MAX - 1; I'm trying to generate numbers between -1 and 1 for multithreaded version of Monte Carlo algorithm.