点出现在球体中的概率
Probability of a dot to appear in a sphere
条目:
m
个顶点的 3D 图
- 一个半径为
r
、体积为 V
、任何中心 的球体
- 图的一个顶点
v
问题:
v
在球体内的概率是多少?
可能的答案:
直觉告诉我这个概率是:1 / (m * V)
但我无法证明。
我觉得你的等式不对,因为 m
不影响概率。顶点坐标的分布确实如此。如果它在覆盖整个球体体积 V
的某个体积 V0
中 均匀 那么概率应该是:
p = V/V0
如果您想获得此类点的实际计数,则:
n = m*p = m*V/V0
我无法为您提供数学证明,但您可以简单地以编程方式执行此操作。例如,让 V0
是轴对齐的立方体,半尺寸 R=1000.0
和中心 (0,0,0)
球体作为其最大的内接球体 r=1000
和相同的中心所以:
float x,y,x0,y0,z0,r;
float rr ,X0,Y0,Z0,R;
int i,m,n;
r=1000.0; x0=0.0; y0=0.0; z0=0.0; // sphere V
R=1000.0; X0=0.0; Y0=0.0; Z0=0.0; // cube V0
m=10000; // number of points
Randomize();
for (i=0,n=0;i<m;i++)
{
// random uniformly distributed position inside V0
x=X0+2.0*Random()*-0.5)*R;
y=Y0+2.0*Random()*-0.5)*R;
z=Z0+2.0*Random()*-0.5)*R;
// compute sphere radius^2
rr = (x-x0)*(x-x0)+(y-y0)*(y-y0)+(z-z0)*(z-z0);
// if inside
if (rr<=r*r) n++;
}
// here n should be close to m*V/V0 = (4.0/3.0)*M_PI*r*r*r/(8.0*R*R*R);
// the bigger the m the more closer it should be.
这种方法有时用于计算 Pi
数字。
条目:
m
个顶点的 3D 图- 一个半径为
r
、体积为V
、任何中心 的球体
- 图的一个顶点
v
问题:
v
在球体内的概率是多少?
可能的答案:
直觉告诉我这个概率是:1 / (m * V)
但我无法证明。
我觉得你的等式不对,因为 m
不影响概率。顶点坐标的分布确实如此。如果它在覆盖整个球体体积 V
的某个体积 V0
中 均匀 那么概率应该是:
p = V/V0
如果您想获得此类点的实际计数,则:
n = m*p = m*V/V0
我无法为您提供数学证明,但您可以简单地以编程方式执行此操作。例如,让 V0
是轴对齐的立方体,半尺寸 R=1000.0
和中心 (0,0,0)
球体作为其最大的内接球体 r=1000
和相同的中心所以:
float x,y,x0,y0,z0,r;
float rr ,X0,Y0,Z0,R;
int i,m,n;
r=1000.0; x0=0.0; y0=0.0; z0=0.0; // sphere V
R=1000.0; X0=0.0; Y0=0.0; Z0=0.0; // cube V0
m=10000; // number of points
Randomize();
for (i=0,n=0;i<m;i++)
{
// random uniformly distributed position inside V0
x=X0+2.0*Random()*-0.5)*R;
y=Y0+2.0*Random()*-0.5)*R;
z=Z0+2.0*Random()*-0.5)*R;
// compute sphere radius^2
rr = (x-x0)*(x-x0)+(y-y0)*(y-y0)+(z-z0)*(z-z0);
// if inside
if (rr<=r*r) n++;
}
// here n should be close to m*V/V0 = (4.0/3.0)*M_PI*r*r*r/(8.0*R*R*R);
// the bigger the m the more closer it should be.
这种方法有时用于计算 Pi
数字。