我希望生成一些数据,表示n维超立方体中点的坐标云。这些点应该均匀分布在n空间中,并且可以根据用户定义的间距生成。这些数据将被存储在一个数组中。
我希望生成一些数据,表示n维超立方体中点的坐标云。这些点应该均匀分布在n空间中,并且可以根据用户定义的间距生成。这些数据将被存储在一个数组中。
为了简化问题,这里举一个普通的立方体例子,即一个有3个维度的立方体。假设它的边长为1,想象你想要点按照$1/n$间隔分布。(这会导致点的均匀矩形分布,但不确定这是否符合你的需求)。
现在,看下面的伪代码:
for i=0;i<=n;i++ //NB i<=n because there will be n+1 points along each axis-parallel line
for j=0;j<=n;j++
for k=0;k<=n;k++
addPointAt(i/n,j/n,k/n) //float arithmetic required here
你可以使用递归来实现这个功能(伪代码):
Function Hypercube(int dimensions, int current, string partialCoords)
{
for i=0, i<=steps, i++
{
if(current==dimensions)
print partialCoords + ", " + i + ")/n";
else if current==0
Hypercube(dimensions, current+1, "( "+i);
else
Hypercube(dimensions, current+1, partialCoords+", "+i);
}
}