【发布时间】:2019-06-08 15:46:34
【问题描述】:
我收到了计算机科学课程的录取任务,我必须在该课程中接近 PI。要计算 pi,我必须在正方形、圆形的面积、点的总数和圆内的点数之间做一个比率。
- N = 总点数
- M = 圆圈内的点
- 直径为400
圆的面积公式
半径^2 * π 或直径^2 * π / 4
正方形的面积公式
2*半径^2或直径^2
我有公式 ( M / N ) * 4
这就是我得到它的方式:
(d^2 * π / 4) : d^2 = M : N
π / 4 = M / N
π = ( M / N ) * 4
问题是我没有得到 pi 作为输出,而是大约 14.2..
有谁知道我做错了什么?
所以在处理中我写了以下代码
float N = 0;
float M = 0;
void setup()
{
size(400, 400);
frameRate(90000);
background(255, 255, 255);
ellipse(200,200,400,400);
}
void draw()
{
/* Random x- en y-coordinate. */
float x = random(0,400);
float dx= (x-200);
float y = random(0,400);
float dy = (y-200);
float d = (float)(Math.sqrt(Math.pow(dx,2) + Math.pow(dy,2)));
/*Red in the circle*/
if(d <= 200 ){
stroke(255,0,0);
M++;
}
else{
stroke(0,255,0); /*green around the circle*/
N++;
}
point(x,y);
println
((M/N)*4);
}
【问题讨论】:
-
什么是“录取作业”?
-
你的公式没问题,但与
N的定义相反,你的N目前只计算不在圈内的点... -
如果你使用double而不是float,你会得到更好的结果。不要使用 pow() 对数字求平方 - 只需使用 x*x。
标签: java math processing pi