Предлагаю довольно странную проверку нового элемента на соответствие с уже записанными.
Ваше решение видимо короче, и менее грузно для процессора. Но разобраться в нём я не смог.
var numbers = [];
numbers[0] = Math.floor(Math.random()*101);
var check;
for(var i = 0; i < 100; i++){
var newItem = Math.floor(Math.random()*101);
check = 0;
for(var n = 0; n < numbers.length; n++){
if (newItem == numbers[n]){
check++;
}
}
if (check == 0){
numbers.push(newItem);
}
}
document.write(numbers);
Но возникает проблема в том что элементов не 100. У меня получилось в среднем 65 элементов. Если у нас просто 100 элементов надо расположить в произвольном порядке, то это задача чуть чуть другая, и решать её стоит чуть чуть по другому.
В смысле что у Вас 100 элементов и рандом даёт вам число от 100 до 1.
То есть у вас есть дискретный набор элементов которые надо перемешать.
Уточните пожалуйста задачу, в виду того что накручивать ещё костылей на моё решение для получения именно 100 элементов бессмысленно.
Поставьте перед собой правильную задачу.