function rand() {return 0;}
Тоже в некотором смысле перемешано будет. Хоть вариант и всего один будет.Но при этом результат должен быть уникальным, не таким каким был с предыдущим числом.
compareFunction(a, b) must always return the same value when given a specific pair of elements a and b as its two arguments. If inconsistent results are returned, then the sort order is undefined.
for (i = 1; i<arr.length; ++i) {
let j = floor(rand()*(i+1));
let tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}