Чтобы не повторяться, я бы один раз задал «темплейт» результата:
var tmpl = "http://site.ru/%RANDOM%.jpg"
В нём потом поменяем подстроку
%RANDOM%
на очередное число.
Как сгенерить N случайных
неповторяющихся чисел от 1 до 100. Например, создать массив из всех вариантов, и потом выдёргивать из него случайные позиции:
var All = [], i, N = 4, Selected = [], pos;
for( i = 1; i <= 100; i++) All.push(i);
// в массиве All теперь числа от 1 до 100
while( All.length > 0 && Selected.length < N) { // пока есть откуда брать и ещё не набрали N чисел
pos = Math.floor( All.length * Math.random()); // случайный индекс из оставшихся элементов
// Из массива All значение удаляется, он становится короче.
// Это гарантия неповторения одинакового числа.
Selected.push( All.splice( pos, 1));
}
// в массиве Selected теперь N случайных неповторяющихся чисел из диапазона от 1 до 100
Теперь остаётся собрать из этих чисел строки:
var result = [];
while( Selected.length) { // пока в массиве есть выбранные числа
result.push( // в результат вставляем..
tmpl.replace( // ..копию строки tmpl, в которой заменили..
'%RANDOM%', // ..подстроку %RANDOM%
Selected.pop()) // ..на число, которое взяли из Selected.
// взятое число из Selected удалилось, массив стал короче.
);
}
/* результат, массив строк: [
"http://site.ru/45.jpg",
"http://site.ru/29.jpg",
"http://site.ru/46.jpg",
"http://site.ru/97.jpg"
] */