नहीं, Array.sort() के साथ रैंडम कम्पेरेटर सही शफल नहीं करता (पक्षपाती वितरण)।
सही तरीका: फिशर-येट्स (नुथ) शफल
function shuffleArray(arr) {
var tmp, current;
var top = arr.length;
if (top) while (--top) {
current = Math.floor(Math.random() * (top + 1));
tmp = arr[current];
arr[current] = arr[top];
arr[top] = tmp;
}
return arr;
}
क्यों sort() गलत है: कम्पेरेटर फंक्शन को ट्रांजिटिव होना चाहिए, लेकिन रैंडम कम्पेरेटर नहीं होता। परिणाम गैर-एकरूप वितरण देता है।
ES6+ संक्षिप्त: arr.sort(() => Math.random() - 0.5) - अभी भी पक्षपाती, उत्पादन में उपयोग न करें।