我尝试使用n
个随机点生成一个多维数据集,其最小距离阈值为1
。我使用矩阵来完成它,因此每个列在多维数据集中都是(x,y,z)
个点。我有时代码有效,有时它不起作用。我真的无法弄清楚为什么会这样......任何帮助或建议都是值得赞赏的,代码的输入是立方体之一的长度和我想要使用的点数。
更新:
澄清代码:
因此,应该创建一个包含3
列和n
行的随机矩阵。这表示多维数据集中(x,y,z)
个点的n
坐标。约束是多维数据集lx
的大小以及点d
之间的最小距离。因此,我的代码会生成nx3
随机矩阵,并检查每个条目以查看其距离是否至少为1
,如果它不是为该元素生成新点。然后它返回并检查所有先前的点以保持该限制。由于某些点的距离小于1
,因此失败了。我不知道我是否做了足够的检查,或者是否有其他的检查。
输入值:
lx = 7.35
n = 256
代码:
function [A]=distribution(lx,n)
format long;
A=0;
new=0;
d=1;
A=rand(n,3).* [lx];
A=reshape( A.' ,3,n);
while(new <= (n+1))
for i=1:(n-1)
for j=(i+1):n
r=A(:,i) - A(:,j);
rsum= sum(dot(r,r));
if(rsum < 1.0)
A(:,j)=rand(1,3).* [lx];
end
end
for k=1:i-1
r2=A(:,k) - A(:,i);
r2sum= sum(dot(r2,r2));
if(r2sum < 1.0)
A(:,j)=rand(3,1).* [lx];
end
end
end
new=new +1;
endwhile
A=reshape( A.' ,n,[]);
答案 0 :(得分:0)
积分需要多随机?尽管存在可能的解决方案,但与所有可能的状态相比,它们很少。完全随机点击解决方案可能会无限期地使用。
我可以提出几种方法:
在这两种方法中,最终结果都不会是随机的。我认为,要获得真正随机的解决方案,你需要在一个带有lx
的方框中对256个球进行随机物理模拟,并稍微摇晃它们。
答案 1 :(得分:0)