我想生成一个随机数(带有mean == 0
的normrnd
)的矩阵,该矩阵使用MATLAB(或任何其他语言)满足以下约束
- 矩阵中绝对值的总和必须等于
X
- 最大的
abs(single number)
必须等于Y
- 数字和它的8个邻居之间的区别(如果在角落为3,如果在边缘处5)必须小于
Z
满足其中一个约束相对容易,但是我想不出一种满足所有这些的算法...
有什么想法?
我不确定是要编辑我的帖子还是在此处回复,所以我正在编辑... @mzimmerman6,您有一点。尽管这些约束不会产生独特的解决方案,但是我如何在不使用rand的情况下获得多个解决方案?
非常简单的3 x 3其中5是最大元素值,30是总和,而2是差异
5 4 3
4 4 2
3 2 3
rody,这实际上可能会有所帮助...我需要思考更多:)
路易斯...嗯...为什么不呢?我可以添加正态分布样本的绝对值...对吗?
这是一种算法,可以获取所需的'随机'数字。
- 生成一个有效数字(例如中间)
- 确定旁边数字之一的可行范围
- 如果没有范围,则转到第1步,否则会生成一个数字并继续
根据您的约束,可能需要一段时间。您可以添加另一个步骤,以查看在返回步骤1之前更改现有数字是否有帮助。