0

HTML 要素を含む Javascript 配列をランダム化しようとしています。これが私がこれまでに持っているものですが、残念ながらその後もいくつかの重複があります。このコード スニペットの何が問題なのかわかりません。アイデアはありますか?

function randomizeArray(theArray)
        {
            var result = new Array();
            var randomNr;
            while ( theArray.length>0 )
            {
                randomNr = Math.floor( (Math.random() * theArray.length) );
                result.push( theArray[randomNr] );
                theArray.splice( randomNr, 1);
            }
            return result;
        }

編集:さらに見直した結果、このコードは数値の配列でテストしたところ、意図したとおりに機能するように見えました。何らかの理由で、配列でまだ重複しています

  • 要素。要素自体を配列に入れる代わりに、要素の .html() を使用しました。その小さな変更の後、すべてが突然意図したとおりに機能しました。それがなぜなのかはまだわかりませんが、少なくともうまくいきます:)

  • 4

    2 に答える 2

    1

    この投稿のトップの回答を確認してください:ループ内の乱数

    言語は異なりますが、理論は同じです。によって使用されるシード番号はMath.random()毎回同じであり、パターンが発生する原因となり、取得している複製が生成されます。

    于 2012-06-26T16:32:12.323 に答える