タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

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

  • きまぐれ日記: Schwartzian Transform でランダムシャッフル

    Schwartzian Transform を使って配列をシャッフルする話をみて、なるほどな~と思いつつも、よくよく考えてみるとこれは2つの意味で駄目です。 1. 計算量が O(n * log(n)) であること。 2. ランダムにシャッフルできない。 1. は説明するまでもないので、2の理由を考えてみます。 まず、rand() が 0..k-1 までの k種類の整数から 1 つ数値を返すものとします。配列のサイズが n の場合、 weightの並びの場合の数は k^n 通り存在します。ところが、配列の順列の場合の数は n! です。 ここで何か矛盾点があるように思えてきます。 実際に k = 2, n = 2 の場合を考えて見ましょう。この場合、サイズ2の配列をシャッフルするんですから、 要素を入れ替える場合と入れ替えない場合が 1/2 の確率で出現するのが正しいシャッフルです。 k =

    odz
    odz 2006/08/31
    sortでシャッフルするのはダメという話
  • Rubyで自然順ソート - 2nd life (移転しました)

    バカが征くを見て。そういや昔自然順ソート調べたなぁ。 http://sourcefrog.net/projects/natsort/ のnatcmp.rbつかってEnumerableに#nartsort #natsort! #natcasesort #natcasesort!組み込んだのが http://rails2u.com/tmp/lib/natsort.rb.txt で、こんな風な結果になる。 gorou[7]$ ruby -e 'require "natsort";p %w(2.txt 11.txt 1.txt).natsort' ["1.txt", "2.txt", "11.txt"] gorou[7]$ ruby -e 'require "natsort";p %w(a2.txt a11.txt a1.txt).natsort' ["a1.txt", "a2.txt", "a1

    Rubyで自然順ソート - 2nd life (移転しました)
    odz
    odz 2006/02/05
  • 1