- 最后登录
- 2013-5-7
- 在线时间
- 69 小时
- 阅读权限
- 10
- 注册时间
- 2008-2-8
- 积分
- 162
- 帖子
- 108
- 精华
- 0
- UID
- 20864
- 性别
- 保密
- 积分
- 162
- 帖子
- 108
- 精华
- 0
- UID
- 20864
- 性别
- 保密
|
关于这个问题,我编程模拟了一下,取了10000000个弦,然后算距离。我模拟的方法是:
设圆的方程为x^2+y^2=1,其中弦的一个端点是(0,1)。
再确定另一个端点的x和y坐标的绝对值,然后随机选取一个象限,确定x&y的符号,然后算这点
与(0,1)的距离,作为弦的长度,比较其与根号3的大小。然后重复做此过程10000000次(到底是计算机啊。。。。。。)。
现在把几次计算的结果写下来:
0.432944
0.433049
0.433023
0.432844
0.432985
可以看到概率稳定在0.432~0.433之间
因此似乎已有的结论都与我的不一致。。。。。。
顺便贴出我的程序:
#include<iostream>
#include<cstdlib>
#include<cmath>
#include<ctime>
using namespace std;
const int N = 10000000;
int main(void){
double dis,lim,x,y;
int area,hit;
srand(time(NULL) );
lim = sqrt(3.0);
hit = 0;
for(int i=0;i<N;i++){
x = ((double)rand() /RAND_MAX )*1.0;
y = sqrt(1.0-x*x);
area = rand()%4;
if(area==1||area==2) x = -x;
if(area==2||area==3) y = -y;
dis = sqrt(x*x + (y-1.0)*(y-1.0) );
if(dis>lim) hit++;
}
cout<<double(hit)/double(N);
system("pause");
return 0;
} |
|