Υπολογιστική προσέγγιση του π με τη μέθοδο monte carlo στη C/C++

Η πλήρης προβολή του βίντεο απαιτεί σύνδεση

Το βίντεο έχει διάρκεια 20:51, πιθανά να χρειάζεται λίγος χρόνος για την προβολή του.

cpp βρόγχος for τυχαίοι αριθμοί π monte-carlo

#include <stdio.h>
#include <cstdlib>
#include <math.h>
#include <time.h>

using namespace std;

int main()
{
  
    int N = 1E+6;
    int i;             
    int k = 0;
    double r = 1.0;
    double x, y, d;    
    double pi;

    srand ( time(NULL) );
    for (i=0; i < N; i++)
    {
        x = (double) rand() / RAND_MAX; 
        y = (double) rand() / RAND_MAX; 
        d = sqrt(x*x + y*y); 
        if (d <= r)
        {
            ++k; 
        }
    }

    pi = 4.0 * (double) k/N;
    printf("pi=%7.6f",pi);
    
    return 0;
}

Μεταγλώττιση και δοκιμαστική εκτέλεση:

astavrak@alice:~$ g++ program.cpp
astavrak@alice:~$ ./a.out 
pi=3.140736
astavrak@alice:~$ ./a.out 
pi=3.140464

Έτρεξα το πρόγραμμα δύο φορές για να δείξω πως το αποτέλεσμα αλλάζει κάθε φορά, εξαιτίας των διαφορετικών τυχαίων αριθμών.

Μπορείτε να το κάνετε πολλές φορές, και να πάρετε ως προσέγγιση του π μέσο όρο του αποτελέσματος κάθε φορά. Ακόμα καλύτερα, να γράψετε ένα πρόγραμμα που να το κάνει: πχ να βρίσκει το π 1000 φορές και να υπολογίζει το μέσο υπολογιστικό π ως καλύτερη προσέγγιση του π!

Συνδεθείτε για περισσότερες δυνατότητες αλληλεπίδρασης,
σχολιασμοί, εξωτερικοί σύνδεσμοι, βοήθεια, ψηφοφορίες, αρχεία, κτλ.

Creative Commons License
Εκπαιδευτικό υλικό από τον Αθανάσιο Σταυρακούδη σας παρέχετε κάτω από την άδεια Creative Commons Attribution-NonCommercial-ShareAlike 4.0 License.
Σας παρακαλώ να ενημερωθείτε για κάποιους επιπλέον περιορισμούς
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=401.