Aproksimacija vrednosti broja primenom Monte Carlo metode.
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
int main()
{
double pi = 0.0, x, y;
clock_t cStart = clock();
srand(time(NULL));
double u;
unsigned long n = 200000000, i, unutar = 0;
for(i = 0; i < n; i++)
{
x = rand() * 1.0 / RAND_MAX;
y = rand() * 1.0 / RAND_MAX;
if ((x*x + y*y) <= 1.0)
unutar += 1;
}
pi = 4.0 * (unutar * 1.0 / n);
clock_t cEnd = clock();
printf("PI: %.10lf za clock: %lf\n", pi, (cEnd - cStart) * 1.0 / CLOCKS_PER_SEC);
return 0;
}
Sporija varijanta generatora slučajnih brojeva.
#define NEW_RAND f1 *=171; f1%=30269; f2*=172; f2%=30307; f3*=170; f3%= 30323; u=((((f1 * 1.0))/30269.0) + ((f2*1.0)/30307.0) + ((f3 * 1.0)/30323.0)); u = u - floor(u);
unsigned long f1=100 + rand(),f2=20 + rand(), f3=2500 + rand();
double u;
for(.....){
NEW_RAND
x = u;
}