Я столкнулся с приведенным ниже алгоритмом для перетасовки массива в Javascript. Похоже, что он отличается от Shuffle от Fisher-Yates тем, что диапазон доступных «свопов» увеличивается с помощью счетчика for-loop. Это похоже на то, как ведет себя версия Фишера-Йейтс. Мне любопытно, действительно ли это правильный алгоритм. Неужели это Фишер-Йейтс? Это предвзято?Перемешивающий алгоритм Ярмарка? (Javascript)
Если кто-то может предоставить некоторый код для проверки частоты перестановок, которые он генерирует, это будет бонус.
<script>
var shuffle = function (myArray) {
var random = 0;
var temp = 0;
console.log(myArray);
for (i = 1; i < myArray.length; i++) {
random = Math.round(Math.random() * i);
console.log(random + '\n');
temp = myArray[i];
myArray[i] = myArray[random];
myArray[random] = temp;
console.log(myArray);
}
return myArray;
}
var arr = [1, 2, 3, 4];
shuffle(arr);
</script>
Вы протестировали его, чтобы увидеть, есть ли наблюдаемое уклонение? –
Этот случайный отступ, хотя ... –
'это правильный алгоритм' - Да, он не вызывает никаких ошибок. – Justinas