JavaScript: почему не выводится значение переменной?
Чтобы не повторяться, я бы один раз задал «темплейт» результата: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"
] */
Не знаю что ты там мутишь, но все работает:function getRandomInt(min, max) {
  return Math.floor(Math.random() * (max - min)) + min;
}

var arr = [
  "http://site.ru/" + getRandomInt(1,101) + ".jpg",
  "http://site.ru/" + getRandomInt(1,101) + ".jpg",
  "http://site.ru/" + getRandomInt(1,101) + ".jpg",
  "http://site.ru/" + getRandomInt(1,101) + ".jpg"
]
console.log(arr);