[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

タグ

Shuffleに関するbabydaemonsのブックマーク (3)

  • 配列やコレクションをシャッフルする(ランダムに並び替える)

    配列やコレクションをシャッフルする(ランダムに並び替える)配列をシャッフルし、要素をランダムに並び替える方法を紹介します。ここでは配列を例にしていますが、コレクションでも同じようにできるでしょう。なおここで説明している事柄は、「Coding Horror: Shuffling」を参考にしています。 Fisher-Yatesアルゴリズムまず、Fisher-Yatesアルゴリズムによる方法を紹介します。この方法は非常に高速です。 'シャッフルする配列 Dim ary As Integer() = New Integer() {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} 'Fisher-Yatesアルゴリズムでシャッフルする Dim rng As New System.Random() Dim n As Integer = ary.Length While n > 1 n -=

    配列やコレクションをシャッフルする(ランダムに並び替える)
  • JavaScriptで配列をシャッフル

    配列をシャッフル、つまりランダムに要素の位置を入れ替えるというのを、sortメソッドを使ってやってみたのだけど、明らかにダメダメなものになってしまった。その後、あーでもないこーでもないと考えたのだけど、算数が得意すぎて頭が痛くなった。ということを某所でぼやいたらはてのくんがコードを見つけてくれた。どうやらFisher-Yatesという有名なアルゴリズムでやると良いらしい。 最初に書いたコードは、 var a = new Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9); a.sort( function (a, b) { return Math.ceil(Math.random() * 3) - 2; } ); というもの。sortメソッドは、パラメータに与えられた関数が負の値・0・正の値を返すことによって要素の順序を決定するので、その関数がランダムに値を返せばランダ

    JavaScriptで配列をシャッフル
  • 最速インターフェース研究会 :: 実践JavaScriptで配列をシャッフルする方法リファクタリング

    JavaScriptで配列をシャッフルする話を見て、そういえばArray#shuffleは以前書いた記憶があるなーと思って調べてみたらコピペだった。 http://www.fumiononaka.com/TechNotes/Flash/FN0212002.html Fisher-Yatesというアルゴリズムだそうです。 Array.prototype.shuffle = function() { var i = this.length; while(i){ var j = Math.floor(Math.random()*i); var t = this[--i]; this[i] = this[j]; this[j] = t; } return this; } a = [1,2,3,4,5]; a.shuffle() // 3,1,5,2,4 a // 3,1,5,2,4 ごく普通に実装

  • 1