fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. #define NUM 10000 // 一回の試行で行うランダムな点の数
  6. #define Ref 10000 // 試行回数
  7.  
  8. int main() {
  9. srand((unsigned)time(NULL)); // 乱数の種を初期化
  10.  
  11. double x, k = 0.0;
  12. int j;
  13.  
  14. // モンテカルロ法によるeの近似
  15. for (j = 0; j < Ref; j++) {
  16. double sum = 0.0;
  17. int count = 0;
  18.  
  19. // ランダムな数を生成して、1に達するまで足し算
  20. while (sum <= 1.0) {
  21. x = rand() / (double)RAND_MAX; // 0から1のランダムな数を生成
  22. sum += x;
  23. count++;
  24. }
  25.  
  26. k += count; // 1に達するまでの回数を加算
  27. }
  28.  
  29. // 結果を平均してeの近似値を出力
  30. k /= Ref;
  31. printf("自然対数の底eの近似値は: %lf\n", k);
  32.  
  33. return 0;
  34. }
  35.  
Success #stdin #stdout 0.01s 5284KB
stdin
Standard input is empty
stdout
自然対数の底eの近似値は: 2.710000