私はアルゴリズムをJavascriptで配列をシャッフルするために見つけました。 Fisher-Yatesシャッフルとは異なり、forループカウンタで使用可能な「スワップ」の範囲が増えています。これはFisher-Yatesのバージョンがどのように動作するかとは逆のように見えます。私はこれが有効なアルゴリズムかどうか不思議です。それは偽装されたフィッシャー・イェイツですか?それは偏っていますか?シャッフルアルゴリズムフェア? (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