當前位置:首頁 » 編程語言 » c語言估算圓周率投針法
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言估算圓周率投針法

發布時間: 2022-06-21 07:34:02

❶ 怎樣編個c語言程序計算圓周率

用蒙特卡羅演算法就行,生成N多個隨機坐標落在1×1的方格里,統計x平方+y平方1000)就好。。詳細代碼見前面的網址。。

❷ 用C++模擬投針法計算圓周率

shiyanpi=2*zhenchang*cishu/(jianju*j);

改成
shiyanpi=2*zhenchang*i/(jianju*j);

❸ C語言計算圓周率

#include<stdio.h>
#include<math.h>
intmain(){
doublep=0,q=0;
inti;
for(i=1;;i++){
p+=6*1.0/(i*i);
q+=4*1.0*pow(-1,i+1)/(2*i-1);//q後面少一個+
if(fabs(sqrt(p)-q)<1e-6)
break;
}
printf("PIis%lf,項數為%d",q,i);
return0;
}

❹ C語言求圓周率

#include<stdio.h>

intmain()
{
floatf;
doublepi,i,sign;
while(scanf("%f",&f)==1)
{
pi=0;
i=1;
sign=1;
do
{
pi+=sign*1.0/i;
}while(1.0/i>=f&&(sign=-sign)&&(i+=2));
printf("%lf ",pi*4.0);
}
return0;
}

❺ C++用投針法算圓周率,求大神幫幫忙

代碼如下:

#include<iostream>

#include<fstream>
#include<math.h>

usingnamespacestd;

doublerandx,randnum;

unsignedlongrandi=1;

constunsignedlongranda=16807;

unsignedlongrandm=pow(2,31)-1;
constdoublepi=3.1415926;

//randomnumbercreation

voidrandom_number()

{

if(randi==randm)

{

randi=randm-1;

}

randi=(randa*randi)%randm;

randx=randi;

randnum=randx/randm;

return;

}

//programmain

voidmain(void)

{

FILE*fp9;

fp9=fopen("mypi.dat","w+");

doublejianju;
doublezhenchang;
doubleminjuli;
doublehu;
doubleshiyanpi;
intcishu;
inti;
intj=0;
cout<<"請輸入投針次數"<<" ";
cin>>cishu;
cout<<"請輸入平行線間距"<<" ";
cin>>jianju;
cout<<"請輸入針的長度"<<" ";
cin>>zhenchang;

for(i=1;i<=cishu;i++)

{

random_number();
minjuli=randnum*jianju/2;
random_number();
hu=randnum*pi;
if(minjuli<=zhenchang/2*sin(hu))
j++;

shiyanpi=2*zhenchang*i/(jianju*j);
if(i%1000==0)
fprintf(fp9,"%d%15.6f ",i,shiyanpi);
}

}

希望能幫到你!望採納!

❻ 求用C語言計算蒲豐氏投針計算圓周率

clear
a=1;%
設置兩條平行線之間的距離
l=0.6;%
投針的長度
counter=0;%
針與平行線相交的次數
n=10000000;%
投擲次數
x=unifrnd(0,a/2,1,n);%產生n個(0,a/2)之間均勻分布的隨機數,這里a/2是投針的中點到最近的平行線的距離
phi=unifrnd(0,pi,1,n);%
產生n個(0,pi)之間均勻分布的隨機數,這里pi是投針到最近的平行線的角度
for
i=1:n
if
x(i)<l*sin(phi(i))/2
%
只要x小於l*sin(phi(i))/2,則相交
counter=counter+1;
end
end
frequency=counter/n;
%
計算相交的頻率,即相交次數比總次數
pi=2*l/(a*frequency)
%
從相交的頻率總求的pi
%運行結果
>>
test

❼ 用c語言計算圓周率

#include<math.h>
main()
{
float pi=0,t=1;
int i=1;
do
{
t=1/(float)(2*i-1);
if(i%2==0) t=-t; /*printf("%d ",t);*/
pi+=t;
i++;
}while(fabs(t)>0.00001);
printf("pi=%f\n",4*pi);
getch();
}

❽ C語言 圓周率

因為圓面積s=pi*r^2,
所以pi=s/r^2.
點(x,y)是0~1正方形范圍內的隨機點,如果x^2+y^2<=1,則該點在單位圓內.
x^2+y^2就是r^2,即圓半徑的平方.d/N為點x,y落入單位圓內的概率,即約為圓面積.
圓的半徑為1/2,而不是1,所以pi=4*d/N.

❾ C語言/C++用投針法計算圓周率

代碼如下:

#include<iostream>

#include<fstream>
#include<math.h>

usingnamespacestd;

doublerandx,randnum;

unsignedlongrandi=1;

constunsignedlongranda=16807;

unsignedlongrandm=pow(2,31)-1;
constdoublepi=3.1415926;

//randomnumbercreation

voidrandom_number()

{

if(randi==randm)

{

randi=randm-1;

}

randi=(randa*randi)%randm;

randx=randi;

randnum=randx/randm;

return;

}

//programmain

voidmain(void)

{

FILE*fp9;

fp9=fopen("mypi.dat","w+");

doublejianju;
doublezhenchang;
doubleminjuli;
doublehu;
doubleshiyanpi;
intcishu;
inti;
intj=0;
cout<<"請輸入投針次數"<<" ";
cin>>cishu;
cout<<"請輸入平行線間距"<<" ";
cin>>jianju;
cout<<"請輸入針的長度"<<" ";
cin>>zhenchang;

for(i=1;i<=cishu;i++)

{

random_number();
minjuli=randnum*jianju/2;
random_number();
hu=randnum*pi;
if(minjuli<=zhenchang/2*sin(hu))
j++;

shiyanpi=2*zhenchang*i/(jianju*j);
if(i%1000==0)
fprintf(fp9,"%d%15.6f ",i,shiyanpi);
}

}

希望能幫到你!望採納!

❿ 把你編的用c語言計算蒲豐氏投針計算圓周率的發給我啊 緊急求助 非常感謝

#include<stdio.h>
#include<math.h>
void main(){
int s; float n,t,pi;
t=1;pi=0;n=1.0; s=1;
while(fab(t)>le-6)
{pi=pi+t;
n=n+2;
s=-s;
t=s/n;
}
pi=pi*4;
printf("pi=%10.6d\n",pi);
}