说,我有一个尺寸为1x1x1的立方体,它跨越坐标(0,0,0)和(1,1,1)之间。我想在这个立方体内产生一组随机的点(假设10个点),这些点在某种程度上是均匀分布的(即在彼此之间的某个最小和最大距离内,也不是太靠近边界)。如何在不使用循环的情况下解决这个问题?如果使用向量/矩阵运算无法做到这一点,那么带循环的解决方案也可以。
让我提供一些关于我的问题的更多背景细节(这将有助于我确切需要和为什么)。我想在多面体内集成一个函数F(x,y,z)。我想用数字表示如下:
$ F(x,y,z)= \ sum_ {i} F(x_i,y_i,z_i)\ times V_i(x_i,y_i,z_i)$
这里,$ F(x_i,y_i,z_i)$是$(x_i,y_i,z_i)$的函数值,$ V_i $是权重。因此,为了准确地计算积分,我需要确定一组随机点,它们彼此之间不太接近或相距不太远(抱歉,但我自己也不知道这个范围是什么。我将能够计算出来只有在我有一个工作代码之后才使用参数研究)。此外,我需要为具有多个多面体的3D网格执行此操作,因此我希望避免循环来加快速度。
答案 0 :(得分:2)
查看这个不错的random vectors generator with fixed sum FEX文件。 该代码“生成m个随机的n元素列向量值,[x1; x2; ...; xn],每个都有一个固定的和,s,并且受到限制a< = xi< = b。载体是随机均匀地分布在解的n-1维空间中。这是通过将该空间分解为许多不同类型的单形(线段,三角形和四面体的多维概括)来实现的。'rand'函数用于在每个单纯形中统一分布向量,并且进一步调用'rand'用于选择不同类型的单纯形,其概率与它们各自的n-1维体积成比例。该算法不执行任何解决方案的拒绝 - 所有这些都是生成的至于已经适合规定的超立方体。“
答案 1 :(得分:1)
使用i=rand(3,10)
,其中每列对应一个点,每行对应一个轴(x,y,z)中的坐标