|
- #include <iostream>
- #include <stdlib.h>
- #include <time.h>
- #ifdef _OPENMP
- #include <omp.h>
- #endif
- using namespace std;
- int main(int argc, char *argv[])
- {
- clock_t start,end;
- start = clock();
- long nr_tries=100000;
- if(argc >1)
- nr_tries=atol(argv[1]);
- long nr_sucess=0;
- #pragma omp parallel
- {
- #pragma omp for reduction (+:nr_sucess)
- for (int try_nr=0;try_nr<nr_tries;try_nr++)
- {
- double x = ((double) rand())/((double) RAND_MAX);
- double y=((double) rand())/((double) RAND_MAX);
-
-
- if(x*x+y*y<1.0)
- {
- //#pragma omp critical
- nr_sucess++;
- //cout<<x<<endl;
- }
- }
- }
- double pi=4.0*((double)nr_sucess)/((double)nr_tries);
- cout<<pi<<" "<<nr_sucess<<" "<<nr_tries<<endl;
- end = clock();
-
- cout<<"clock_time="<<(double)(end-start)/CLOCKS_PER_SEC<<endl;
-
- return 0;
- }
复制代码 |
|