今天看到hdu上有一題是要計算圓周率,查閱了一些資料,發現有這些方法:
1.正方形逼近;
2.迭代法;
3.蒙特卡羅法;
4.丘德諾夫斯基公式
$蒙特卡洛法
蒙特卡羅法是生成n多個隨機座標落在1×1的方格裡,統計x平方+y平方<1的個數的點即可。
如何用蒙特卡羅方法計算圓周率π呢
正方形內部有乙個相切的圓,它們的面積之比是π/4。
現在,在這個正方形內部,隨機產生10000個點(即10000個座標對 (x, y)),計算它們與中心點的距離,從而判斷是否落在圓的內部。
如果這些點均勻分布,那麼圓內的點應該佔到所有點的 π/4,因此將這個比值乘以4,就是π的值。通過隨機模擬30000個點,π的估算值與真實值相差0.07%。
$丘德諾夫斯基公式
然後重點來了:
這是2023年的ioccc大賽上計算圓周率的**:
#define _ -f<00||--f-oo--;
int f=00,oo=00;main()f_oo()
用一段形狀是圓形的程式,通過計算**本身的面積,計算圓周率的近似值
之後我又發現一種超級簡潔而且收斂很快的演算法
按照這個思路寫了下**:
#includelong a=10000, b, c=28000, d, e, f[28001], g;
long ans[28001];
int func ()
int main ()
return 0;
}
注意的是每個ans[i]中儲存的是4位數;
最後,看了一大堆,我果斷的用打表來水過了hdu上的那題 (逃
hadoop中的pi值計算
注意在hadoop中,操作一定要規範。不規範的操作引起exception滿天飛 其實hadoop中的pi值運算還是挺簡單的。在這裡主要講一下這個例子中要注意的地方 hadoop master hadoop 1.0.3 hadoop jar hadoop examples 1.0.3.jar pi 1...
OpenMP平行計算PI的值
用vs新建乙個工程後,首先要右鍵專案,屬性 c c 語言,在右邊的對話方塊中openmp支援選擇是 程式 為 include include include static long num steps 100000 double step,pi void main pi step sum clock...
蒙特卡洛方法的使用 計算pi值與積分計算
參考 coding utf 8 created on tue jan 22 07 38 15 2019 author ylz 用此種方法對pi值進行估計,就是蒙特卡洛方法 蒙特卡洛方法 1,產生大量的資料樣點 2,對資料樣點進行依據條件進行分割,分類 3,用每個類別中樣點數量的統計值,來計算某些引數...