首页 > 试题广场 >

随着 n 逐渐增大,Darts函数的输出结果逐渐接近于___

[问答题]

随着 n 逐渐增大,Darts函数的输出结果逐渐接近于____

double rand_double() {

        return rand() / (double)RAND_MAX;

}

double Darts(int n) {

      int k = 0;

      double x, y;

      for (int i = 0; i < n; i++) {

      x = rand_double();

      y = x;

      if ((x * x + y * y) <= 1.0)

      k++;

   }

   return k * 4.0 / n;

}

2*x*x<=1 
x<=sqrt(0.5)
所以k/n==sqrt(0.5) 4*sqrt(1/2)=2*sqrt(2)
发表于 2019-06-13 23:08:41 回复(0)
1. double rand_double() 函数返回值为随机的一个 (0 , 1] 的数字。
2. double Darts(int n) 函数,当 n 取很大值时候,意思为在 [0, n) 中随机打点,k 个点落在一个范围。这个范围使得 x 满足 2 * x^2 <= 1, 即 x <= sqrt(0.5). 这句话相当于隐含了 k / n == (x 取值范围)  / 1 ==  sqrt(0.5) / 1
3.  k * 4.0 / n == 4 *  sqrt(0.5) == 2 * sqrt(2) 
发表于 2020-09-09 03:18:50 回复(0)
x^2+y^2=1;
x>0,x<1
y>0,y<1
k统计落在1/4圆中的点数量,所以结果应该为Π?
发表于 2020-07-17 19:36:09 回复(0)
2*sqrt(2)
发表于 2019-08-26 16:26:11 回复(0)