fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include <time.h>
  5.  
  6. #define NUM_POINTS 10000 // 乱数の個数
  7.  
  8. // 点が円の中にあるかどうかを判定する関数
  9. int is_in_overlap(double x, double y) {
  10. double dist1 = (x - 0.5) * (x - 0.5) + y * y;
  11. double dist2 = (x - 0.5) * (x - 0.5) + (y - 1) * (y - 1);
  12. return (dist1 <= 0.25) && (dist2 <= 0.25);
  13. }
  14.  
  15. int main() {
  16. int i, count = 0;
  17. double x, y;
  18. double estimated_area;
  19.  
  20. srand(time(NULL)); // 乱数の種を設定
  21.  
  22. for (i = 0; i < NUM_POINTS; i++) {
  23. x = (double)rand() / RAND_MAX;
  24. y = (double)rand() / RAND_MAX;
  25.  
  26. if (is_in_overlap(x, y)) {
  27. count++;
  28. }
  29. }
  30.  
  31. // 重複領域の面積の推定値
  32. estimated_area = 4.0 * (double)count / NUM_POINTS;
  33.  
  34. printf("推定される重複領域の面積: %f\n", estimated_area);
  35.  
  36. return 0;
  37. }
  38.  
Success #stdin #stdout 0.01s 5268KB
stdin
Standard input is empty
stdout
推定される重複領域の面積: 0.000000