Откуда, куда, что и в каком количестве надо копировать:
const sourceSelector = '#a';
const targetSelector = '#b';
const itemSelector = 'li';
const count = 3;
Вспомогательная функция - вырезание из массива случайного элемента:
const random = arr => arr.splice(Math.random() * arr.length | 0, 1)[0];
Копируем:
$(sourceSelector).on('click', itemSelector, function() {
const items = $(this).siblings().clone().get();
$(targetSelector).html([...Array(count)].map(random.bind(null, items)));
});
// или
const source = document.querySelector(sourceSelector);
const target = document.querySelector(targetSelector);
source.addEventListener('click', ({ target: t }) => {
if (t = t.closest(itemSelector)) {
const items = [...source.querySelectorAll(itemSelector)].filter(n => n !== t);
target.innerHTML = '';
target.append(...Array.from(
{ length: Math.min(items.length, count) },
() => random(items).cloneNode(true)
));
}
});
Похоже на то, что вам надо?
UPD. Как-то сразу не заметил:
если в списке всего три элемента - все три и выводятся
Сначала получаем всё, если кликнутый не нужен, вырезаем его:
const items = $(itemSelector, sourceSelector).clone().get();
if (items.length > count) {
items.splice($(this).index(), 1);
}
// или
const items = [...source.querySelectorAll(itemSelector)];
if (items.length > count) {
items.splice(items.indexOf(t), 1);
}