В этой задаче хорошо бы генерить случайные числа
без повтора максимально долго. Исчерпывать последовательность
0..n
, в случайном порядке выдёргивая из этой «колоды» очередную карту. Когда колода пустеет, открываем новую.
Можно примерно так сделать функцию, которая будет выдёргивать из колоды случайную карту, и другой функцией генерить для неё картинку:
// Итератор случайных уникальных - Random Unique
function getRUIterator(max) {
let buffer = [];
const ruIterator = {
next: function() {
if (buffer.length === 0) { // если колода пуста
for (let i = 0; i < max; i++) buffer.push(i); // открываем новую 0..max
}
const index = Math.floor(Math.random() * buffer.length);
return buffer.splice(index, 1)[0]; // вынимаем из колоды случайную карту
}
}
return ruIterator;
}
/**
* генерим в каждый див по случайной картинке
* как можно дольше без повторов
* @param int iTotal число доступных картинок
* @param Array массив строк - айдишки div'ов, куда вставлять
*/
function placeRandomImages(iTotal, aDivs) {
function placeImage(n, id) {
const img = new Image();
img.src = `img/${n}.png`;
img.border = '0';
document.getElementById(id).appendChild(img);
}
// будет генерить случайные неповторяющиеся
const RUI = getRUIterator(iTotal);
for (let i = 0; i < aDivs.length) {
placeImage( RUI(), aDivs[i]);
}
}
placeRandomImages(2, ["imaaaga", "imaaaga2"]);