Algorithm 成对比较算法设计

Algorithm 成对比较算法设计,algorithm,Algorithm,我有15组5个单词。假设第一个分组是“快乐”分组,如下:[“快乐”、“微笑”、“乐趣”、“快乐”、“笑”];第二个分组是“悲伤”分组,如下:[“悲伤”、“皱眉”、“沮丧”、“哭泣”、“雨云”]。所有其他分组都是相似的,在一个数组中有五个单词 我正在设计一个配对比较应用程序,我需要从每个分组中随机选择一个单词,并与从每个分组中随机选择的单词配对。根据以上示例,分组1和分组2的一对可能是[“微笑”、“哭泣”]。总共应该有120对(每个分组正好有一对,每个分组有一对) 我在考虑使用一个循环,一个接一个

我有15组5个单词。假设第一个分组是“快乐”分组,如下:[“快乐”、“微笑”、“乐趣”、“快乐”、“笑”];第二个分组是“悲伤”分组,如下:[“悲伤”、“皱眉”、“沮丧”、“哭泣”、“雨云”]。所有其他分组都是相似的,在一个数组中有五个单词

我正在设计一个配对比较应用程序,我需要从每个分组中随机选择一个单词,并与从每个分组中随机选择的单词配对。根据以上示例,分组1和分组2的一对可能是[“微笑”、“哭泣”]。总共应该有120对(每个分组正好有一对,每个分组有一对)

我在考虑使用一个循环,一个接一个地遍历分组,然后对于剩余的每个分组,从我正在查看的分组中随机抽取一个单词,从另一个分组中抽取一个单词,并创建一对

我觉得这不是很优雅,也不是很有效,我很好奇如何设计一个更好的算法。我认为递归可能会有帮助,但我想不出在这个场景中如何使用它


有什么想法或想法吗?谢谢

我曾想过使用递归,但不幸的是,我想不出任何算法

我在这里尝试的是:虽然所有集合的列表不是空的,但是迭代第一个集合上的每个项目,并将其与任何其他集合中的随机项目配对,然后删除所选项目。迭代完第一个集合后,只需从所有集合的列表中删除第一个集合。这样就不需要额外的计算来检查重复项

(我使用javascript实现,并简化了集合)

让myArray=[[“快乐”、“微笑”、“有趣”],
[“悲伤”、“皱眉”、“沮丧”],
[1,2,3],
[4,5,6]]
让配对=[]
而(myArray.length!=1){

对于(var i=0;i我曾想过使用递归,但不幸的是,我想不出任何算法

我在这里尝试的是:虽然所有集合的列表不是空的,但迭代第一个集合上的每个项目,并将其与任何其他集合中的随机项目配对,然后删除所选项目。迭代整个第一个集合后,只需从所有集合的列表中删除第一个集合。这样就不需要额外的计算来检查复制品

(我使用javascript实现,并简化了集合)

让myArray=[[“快乐”、“微笑”、“有趣”],
[“悲伤”、“皱眉”、“沮丧”],
[1,2,3],
[4,5,6]]
让配对=[]
而(myArray.length!=1){

对于(var i=0;i你确定应该有120对吗?我相信它是
binom(15,2)=105
。它的右边是5x4x3x2x1i。我在考虑填充索引的中间数组(有点像间接引用)。随机删除其中一个。这样你就不会再随机选择同一个选项。你能举一个基数较低的例子吗?(比如3组,每组两个单词,可能有一组配对)你确定应该有120对吗?我相信这是
binom(15,2)=105
。它的右边是5 x 4 x 3 x 2 x 1我在考虑填充索引的中间数组(有点像间接引用)。从中随机删除一个。这样你就不会再随机选择相同的选项。你能举一个基数较低的例子吗?(假设3组,每组两个单词,以及一组可能的配对)
let myArray = [["happy", "smile", "fun"],
               ["sad", "frown", "bummer"],
               [1,2,3],
               [4,5,6]]

let pairs = []

while (myArray.length != 1){    
    for (var i = 0; i<myArray[0].length; i++){
        var next = myArray[Math.floor(Math.random() * (myArray.length-1)) + 1];
        var nextindex = Math.floor(Math.random()*next.length)

        pairs.push([myArray [0][i], next[nextindex]]);
        next.splice(nextindex, 1)
    }
    anarray.splice(0, 1);
}

console.log(pairs)