arr = [p1, p2, p3, p7, p10, p15, p17, p19, p22, p27]
Я хочу сгенерировать что-то похожее на следующее:
результат: [[p2,p19],[p27,p10],[p15,p3],[p19,p17],[p27,p7],[p3,p17],[p27,p22],[p22,p3],[ п15,п1],[п7,п2],[п1 9,p1],[p17,p15],[p15,p27],[p3,p7],[p10,p22],[p17,p27],[p2,p3],[p27,p1],[p19, p22],[p2,p17]]
В том, что у меня «работает», я получаю уникальные пары, однако я не получаю ровно 4 экземпляра каждого элемента. Я получаю следующие экземпляры для каждого элемента:
p1 - 3, p2 - 4, p3 - 5, p7 - 3, p10 - 2, p15 - 4, p17 - 5, p19 - 4, p22 - 4, p27. - 6
Вот массив, который я использую:
Код: Выделить всё
let arr = [p1, p2, p3, p7, p10, p15, p17, p19, p22, p27];
Код: Выделить всё
function selectUniquePairs(arr) {
if (arr.length < 2) {
return "Array must contain at least two elements.";
}
const selectedPairs = new Set();
const result = [];
for (let i = 0; i < arr.length * 2; i++) {
let index1, index2;
do {
index1 = Math.floor(Math.random() * arr.length);
index2 = Math.floor(Math.random() * arr.length);
} while (index1 === index2 || selectedPairs.has(JSON.stringify([index1, index2].sort())));
const pair = [arr[index1], arr[index2]];
result.push(pair);
selectedPairs.add(JSON.stringify([index1, index2].sort()));
}
return result;
}
Я хочу сделать это на чистом JavaScript, без дополнительных библиотек.>
Подробнее здесь: https://stackoverflow.com/questions/793 ... ed-4-times