Добрый день.
Разбирал алгоритм рандомизации массива Fisher–Yates, и встал вопрос, ниже привожу код:
const randomArr = (array)=>{
const newArr = [];
let n = array.length;
let i;
while(n){
i = Math.floor(Math.random()*n--);
newArr.push(array.splice(i,1)[0]);
}
return newArr
}
Если в цикле while заменить n-- на n-1 то код уходит в бесконечный цикл. Понимаю что есть разница между двумя выражениями, но в контексте работы алгоритма не могу сообразить. Если не сложно поясните.