#include
main()
{ int n,i; double t,
sum;/*1*/
printf("请输入n的值\n");
scanf("%d",&n);
sum=2; i=1; t=2;/*2*/
while(i /*3*/ // sum=sum*t; i=i+1; } printf("π的值=%f\n",t);/*4*/ } 或。 写一个Java程序来实现蒙特卡洛法求π的近似值: 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=1; i<=numberOfDarts; i++){ 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); }
公式没有问题,每项到最后会趋向1的,但是你的代码里错了好几处!现在这个代码运行没有问题了,你看看: #include
{
int n,i;
float sum;
printf("请输入n的值\n");
scanf("%d",&n);
sum=2;
i=1;
while(i
sum=sum*(2*i)*(2*i)/(2*i-1)/(2*i+1); i=i+1;
}
printf("π的值=%f\n",sum);
}
这个公式有问题啊,我怎么看是非收敛的啊?越来越大啊