如何在 4D 平面上的某个点周围找到均匀分布的点?

How to find evenly distributed points around a point on a plane in 4D?

我正在尝试创建一个模拟,它要求我改变一组概率,即变量总和必须为 1。

当我想改变一组 3 个概率的参数时,我将每个参数视为 3D 中的一个轴 space 并使用等式对平面 x + y + z = 1 上的圆进行参数化p0 + rcos(v) (dot) u1 + rsin(v) (dot) u2,其中p0是表示原始概率的点,u1和u2是平行于平面的垂直向量,(dot)表示点积,并且r 和 v 是自由变量。通过改变 r 并沿 2pi 为 v 选择几个点,我可以生成一组接近原始概率但仍然有效的概率,满足我们的约束。

我现在遇到的问题是,当我尝试对一组 4 个概率(即 4D space 执行此操作时,我无法想象或找到扩展此方程组的方法。有没有办法实现类似于我对 4D 案例的 3D 案例的东西?我最初生成 3D 概率的方法是否愚蠢?如果是,标准方法是什么?

我假设你想要一个均匀分布的分布

一种方法是

  1. 采样一个 4D 高斯分布,已知它在所有方向上均匀分布 1
  2. 将样本点投影到超平面2,
  3. 将坐标归一化为半径 1(简单地除以 sqrt(sum(x**2)))。

这是一种高级方法,您可以使其更有效地用于 4D,但此实现很容易扩展到 N 维空间。

给定 4D 超平面的基础,您可以使用 3D 采样,就像将圆放置在 3D 平面上一样,对于在 3D 球体中均匀采样点的教程 here, for a "official" source saying the same check here

首先考虑 3d 情况的不同方法,它不需要任何三角函数:

您对矢量元素的总和感兴趣,称其为 S(v).

v = (2, 3, 5) S(v) = 10

你对 S = 1 平面感兴趣,它有一个法向量,我们称之为 k:

k = (1/3, 1/3, 1/3) = (1/3)(1, 1, 1)

你在那个平面上有一个点 p0 (S(p0)=1), 和 你想要平面中距离 p0.

r 的一些点

从随机选择的一些点开始,在原点周围的单位球体中均匀分布 x2+y2+z2 < 1.(这个很简单,直接从那个球体周围的立方体中均匀选取点,拒绝球体外的点即可。)

现在将这些点中的每一个投影到 S=0 平面上:

v -> v - S(v)k

(盯着看,直到明白为止。)现在您的点散布在半径为 1 的圆盘中,垂直于 k。它们在圆盘中不均匀,它们靠近中间较厚,但它们在 角度上是均匀的。 现在缩放每个点以将其移动到半径为 r 的圆:

v -> v r/|v|

现在移动点环以 p0:

为中心

v -> v + p0

现在是关键。 您刚才所做的一切在 n 维中都像在 3 维中一样容易。