タグ

random sortに関するfrsh_mtのブックマーク (2)

  • 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で配列をシャッフル
    frsh_mt
    frsh_mt 2008/02/16
    Fisher-Yatesでソート
  • Rubyで配列のランダムソート - ボクノス

    Rubyでランダムソートをしようと思ったら、色々な発見が出来た。試行錯誤の記録。 結論 ランダムソートならsort_by(rand)がいい。 p (1..10).sort_by{rand} #=> [10, 3, 5, 9, 8, 6, 2, 4, 7, 1] シェルスクリプトとして活躍中〜。 % random() { ruby -e 'print STDIN.to_a.sort_by{rand}' } % printf "%d\n" {1..5} | random 2 1 3 4 5かなり便利っす。 では、最適解が出るまでの記録をどうぞ。 ランダムソート sortを使ってランダムに並び替えてみる。 p (1..10).sort{rand(3) - 1} [5, 2, 10, 1, 4, 9, 6, 3, 7, 8] rand(3) - 1だと、並び替える確率が低くなってしまうと思い、(r

    Rubyで配列のランダムソート - ボクノス
  • 1