fork download
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <math.h>
  4.  
  5. #define M_PI 3.14159265
  6.  
  7. int main() {
  8. double a, b, s, x1, x2, x3, x4, y1, y2, y3, y4;
  9. double r, q1, q2, q3, q4, shinchi;
  10. int count, m, n;
  11.  
  12. // 理論的な円の面積
  13. shinchi = 1.0;
  14.  
  15. // 円の中心
  16. x1 = 1.0; y1 = 0.0; // 第一の円の中心
  17. x2 = 0.0; y2 = 1.0; // 第二の円の中心
  18. x3 = 0.0; y3 = 0.0;
  19. x4 = 1.0; y4 = 1.0;
  20. r = 1.0; // 半径
  21. count = 0;
  22.  
  23. for (n = 10; n < 100000; n = n * 5) {
  24. count = 0;
  25. s = 0.0;
  26. for (m = 0; m < n; m++) {
  27. a = (double)rand() / RAND_MAX; // 0.0 から 1.0 の乱数
  28. b = (double)rand() / RAND_MAX; // 0.0 から 1.0 の乱数
  29. // 距離の計算
  30. q1 = (a - x1) * (a - x1) + (b - y1) * (b - y1);
  31. q2 = (a - x2) * (a - x2) + (b - y2) * (b - y2);
  32. q3 = (a - x3) * (a - x3) + (b - y3) * (b - y3);
  33. q4 = (a - x4) * (a - x4) + (b - y4) * (b - y4);
  34. count++;
  35. // 両方の円の中に点が入っているかを確認
  36. if (q1 < r && q2 < r && q3 < r && q4 < r) s += 1.0;
  37. }
  38. s /= count; // 平均を取る
  39. printf("%d\t%f\n", n, fabs(s - shinchi)); // 理論値との差を表示
  40. }
  41.  
  42. return 0;
  43. }
Success #stdin #stdout 0.01s 5288KB
stdin
Standard input is empty
stdout
10	0.600000
50	0.700000
250	0.644000
1250	0.692800
6250	0.672800
31250	0.686816