Υπολογιστική προσέγγιση του π με τη μέθοδο monte carlo στη C/C++
Το βίντεο έχει διάρκεια 20:51, πιθανά να χρειάζεται λίγος χρόνος για την προβολή του.
#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 Attribution-NonCommercial-ShareAlike 4.0 License.
Σας παρακαλώ να ενημερωθείτε για κάποιους επιπλέον περιορισμούς
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=401.