我V
在 Matlab 中创建随机向量时遇到了以下一组约束:(给定参数N
、D
、L
和theta
)
- 向量
V
必须是N
单位长 - 元素的平均值必须为
theta
- 没有 2 个连续元素的差异可能超过 +/-10
D == sum(L*cosd(V-theta))
我对最后一个问题最多。有任何想法吗?
编辑
其他语言或方程式形式的解决方案同样可以接受。Matlab 对我来说只是一个方便的原型设计工具,但最终的算法将在 java 中。
编辑
从评论和初步答案中,我想添加一些澄清和初步想法。
我不是从任何标准发行版中寻求“真正随机”的解决方案。我想要一个伪随机生成的值序列,满足给定参数集的约束。
我试图近似的系统是链长度为 L 的 N 个链,其中链的末端在 theta 方向上远离另一端 D。
我在这里的初步见解是,可以从考虑中删除 theta 直到最后,因为(2)本质上将 theta 添加到 0 均值向量 V 的每个元素(将均值移动到 theta)并且(4)只是再次删除该均值。所以,如果你能找到 theta=0 的解决方案,那么问题就解决了所有的 theta。
根据要求,这是一个合理的参数范围(不是硬约束,而是典型值):
5<N<200
3<D<150
L==1
0 < theta < 360