问题描述
我正在尝试创建一个需要我改变一组概率的模拟,即变量的总和必须为 1。
当我想改变一组 3 个概率的参数时,我将每个参数视为 3D 空间中的一个轴,并使用方程 p0 + rcos(v) 在 x + y + z = 1 平面上参数化一个圆(dot) u1 + rsin(v) (dot) u2,其中p0是表示原始概率的点,u1和u2是平行于平面的垂直向量,(dot)表示点积,r和v是自由变量.通过改变 r 并为 v 沿 2pi 选择几个点,我可以生成一组接近原始但仍然有效的概率,满足我们的约束。
我现在遇到的问题是,当我尝试对一组 4 个概率(即 4D 空间)执行此操作时,我无法想象或找到扩展此方程组的方法。有没有办法实现类似于我对 4D 案例的 3D 案例所拥有的东西?我最初为 3D 生成概率的方法是不是很蠢?如果是,那么标准的方法是什么?
解决方法
我假设你想要一个均匀分布的分布
一种方法是
这是一种高级方法,您可以使其更有效地用于 4D,但此实现很容易扩展到 N 维空间。
给定 4D 超平面的基础,您可以使用 3D 采样,就像将圆放置在 3D 平面上一样,对于在 3D 球体 here 中均匀采样点的教程,对于“官方”消息来源说同样的支票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
现在将每个点投影到 S=0 平面上:
v -> v - S(v)k
(注视它直到它有意义。)现在您将点分散在半径为 1 的圆盘中,垂直于 k。它们在圆盘中不均匀,靠近中间更厚,但它们在角度上是均匀的。现在缩放每个点以将其移动到半径为 r 的圆:
v -> v r/|v|
现在移动点环以p0为中心:
v -> v + p0
现在是踢球者。 您刚刚在 n 维中所做的一切都像在 3 维中一样轻松。