Может ли кто-нибудь изменить меня, как это работает?Какова логика этой реализации _.shuffle?
Я немного смущен относительно того, как мы гарантируем, что генерируемое случайное число (так называемый индекс, который мы пытаемся получить) var rand является уникальным, чтобы гарантировать, что мы перетасовываем данный массив.
Например. учитывая [1,2,3,4], мы возвращаем [3,4,2,1], а не [3,3,4,4], потому что генерируемое случайное число повторяет индекс 2 и 3?
_.shuffle = function(array) {
var newArr = array.slice();
for (var i=array.length-1; i>0; i--) {
var rand = Math.round(Math.random() * i);
var temp = newArr[rand];
newArr[rand] = newArr[i];
newArr[i] = temp;
}
return newArr;
};
Почему это должен быть _unique_? – Satpal
Я только немного уточнил свой вопрос, но мне казалось, что нам нужно создавать уникальные индексы, чтобы действительно претендовать на «перетасовку»? @Satpal – misteryeo