您的位置:首页 > 教育 > 锐评 > 笛卡尔乘积算法js实现

笛卡尔乘积算法js实现

2024/7/6 18:57:31 来源:https://blog.csdn.net/qq_48691693/article/details/140157621  浏览:    关键词:笛卡尔乘积算法js实现

全因子实验设计( DOE) :指所有因子的所有水平的所有组合都至少进行一次实验,可以估计所有的主效应和所有的各阶交互效应。

笛卡尔乘积:指在数学中,两个集合X和Y的笛卡尔积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员。

输入:[[1,4,5],[1,2],[7,3,6]]二维数组

输出:[[1,1,7],[1,1,3],[1,1,6], [1,2,7],[1,2,3],[1,2,6],[4,1,7],[4,1,3],[4,1,6],[4,2,7],[4,2,3],[4,2,6],[5,1,7],[5,1,3],[5,1,6],[5,2,7],[5,2,3],[5,2,6]]

代码:

function generateOrthogonalArray(cartesianArray) {if (!cartesianArray || cartesianArray.length === 0) {return [];}const result = [];const lengths = cartesianArray.map((arr) => arr.length);const total = lengths.reduce((acc, val) => acc * val, 1);for (let i = 0; i < total; i++) {const row = [];let index = i;for (let j = lengths.length - 1; j >= 0; j--) {const currentLength = lengths[j];const currentIndex = index % currentLength;row.unshift(cartesianArray[j][currentIndex]);index = Math.floor(index / currentLength);}result.push(row);}return result;
}
const data=[[1,4,5],[1,2],[7,3,6]];
const result = generateOrthogonalArray(data);
console.log(result);

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com