#include<stdio.h>
main()
{ int n,idouble t,
sum/*1*/
printf("请输入n的值\n")
scanf("%d",&n)
sum=2i=1t=2/*2*/
while(i<n) { t=t*(2*i)*(2*i)/(2*i-1)/(2*i+1)
/*3*/ // sum=sum*ti=i+1}
printf("π的值=%f\n",t)/*4*/ }
或。
import java.io.BufferedReader
import java.io.InputStreamReader
public class MonteCarloPi {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in))
System.out.print("How many darts shoud I toss at the board?\n")
String s = br.readLine()
int numberOfDarts = Integer.parseInt(s.trim())
double radius = 1.0
Dartboard d = new Dartboard(radius)
for(int i=1i<=numberOfDartsi++){
Toss t = Toss.getRandom(radius)
d.strike(t)
}
double fractionIn = d.getFractionIn()
double pi = 4.0 * fractionIn
System.out.println("Pi is approximately "谨携扒+pi)
}
}
class Dartboard{
private double radius
private int insideCircle, outsideCircle
public Dartboard(double radius){
this.radius = radius
insideCircle = 0
outsideCircle = 0
}
public void strike(Toss toss){
double x = toss.getX()
double y = toss.getY()
if(Math.sqrt(x*x + y*y) <radius)
insideCircle++
else
outsideCircle++
}
public double getFractionIn() {
double total = (double) (insideCircle + outsideCircle)
return (double) insideCircle/total
}
}
class Toss{
private double x,y
public Toss(double x, double y){
this.x = x
this.y = y
}
public double getX(){return x}
public double getY(){return y}
public static Toss getRandom(double radius){
double x,y
double size = Math.random()
double sign = Math.random()
size = size * radius
if(sign >0.5)
x = size
else
x = -size
size = Math.random()
sign = Math.random()
size = size * radius
if(sign >0.5)
y = size
else
y = -size
return new Toss(x,y)
}
}
扩展资料:
C语言:用循环结构分别编写程序
#include
void main()
{
\x09int n=1
\x09float temp
\x09float sum=0
\x09do
\x09{
\x09\x09temp=(float)1/(2*n-1)
\x09\x09if(n%2==1)
\x09\x09\x09sum+=temp
\x09\x09else
\x09\x09\x09sum-=temp
\x09\x09n++
\x09}while(temp>=0.000001)
\x09printf("Pi=%f\n",sum*4)
}
标准C语言源程序如下:通过岁蠢胡递乎拦归计算pi值
#include<档消stdio.h>
#include<math.h>
double picount(unsigned int level){ //level 为递归层次
double a
if(level==1)
return 1
else{
a=pow(-1,level-1)/(2*level-1)
return picount(level-1)+a
}
}
main(){
unsigned int lev
printf("input the recursive level : ")
scanf("%d",&lev)
printf("pi is %f \n",4*picount(lev))
}
#include<stdio.h>main()
{
int n,i
double t,sum/*1*/
printf("请输入n的值\n"羡歼槐)
scanf("%d",&n)
sum=2
i=1
t=2/改烂*2*/
while(i<n)
{
t=t*(2*i)*(2*i)/(2*i-1)/(2*i+1)/*3*/
//兄友 sum=sum*t
i=i+1
}
printf("π的值=%f\n",t)/*4*/
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)