Algorithm 成对比较算法设计
我有15组5个单词。假设第一个分组是“快乐”分组,如下:[“快乐”、“微笑”、“乐趣”、“快乐”、“笑”];第二个分组是“悲伤”分组,如下:[“悲伤”、“皱眉”、“沮丧”、“哭泣”、“雨云”]。所有其他分组都是相似的,在一个数组中有五个单词 我正在设计一个配对比较应用程序,我需要从每个分组中随机选择一个单词,并与从每个分组中随机选择的单词配对。根据以上示例,分组1和分组2的一对可能是[“微笑”、“哭泣”]。总共应该有120对(每个分组正好有一对,每个分组有一对) 我在考虑使用一个循环,一个接一个地遍历分组,然后对于剩余的每个分组,从我正在查看的分组中随机抽取一个单词,从另一个分组中抽取一个单词,并创建一对 我觉得这不是很优雅,也不是很有效,我很好奇如何设计一个更好的算法。我认为递归可能会有帮助,但我想不出在这个场景中如何使用它Algorithm 成对比较算法设计,algorithm,Algorithm,我有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)