私は現在、入力された文字列をスクランブルする単純な関数に取り組んでおり、考えられるすべての順列が同じ可能性があります。私のコードは以下です。
function scramble(s) {
result = s.split("");
for(var i = 0; i < s.length; i++) {
var j = Math.floor(Math.random() * (i + 1));
var scrambler = result[i];
result[i] = result[j];
result[j] = scrambler;
}
return result.join("");
}
これまでのところ、コードは正常に機能しているように見えます...しかし、すべての可能な順列は同じように起こりますか? (私は Math.random と Math.floor を信じていますが、実行時に i と j を見ると奇妙な出力が得られます。)