タグ

arrayに関する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 -=

    配列やコレクションをシャッフルする(ランダムに並び替える)
  • Re[6]: hash_mapの使い方

    さてと、僕の出番だ ^^; #include <iostream> #include <cliext/hash_map> using namespace System; /* 等しかったらtrueを返せ */ bool my_comp(array<char>^ k1, array<char>^ k2) { if ( k1->Length != k2->Length) return false; for ( int i = 0; i < k1->Length; ++i ) { if ( k1[i] != k2[i] ) return false; } return true; } /* hash値を返せ */ int my_hash(array<char>^ k1) { int result = 0; for each ( char item in k1 ) { result = resul

    babydaemons
    babydaemons 2010/11/26
    επιστημηさまさまだw
  • 一次元配列同士の比較のいろいろなやり方 - harupiyoの日記

    問題 @a = (1,2,3); @b = (1,2,3); のような配列があったとして、これらの中身が同じ(@a = @b) であることを確認したいと思います。 細かい条件として、値は正の数字のみ(負はない、)で並び順は気にしない、かつ同じ番号はないという事にします。 かんたんに考えると、次の二つの条件を満たせればいいはずです。 二つの要素の数が同じであること 先頭から比較して、末尾までの各項目の内容が等しいこと 素直にコーディングすると... sub is_same($$){ my($a,$b) = @_; # (1)二つの要素の数が同じであること return 0 if @$a != @$b; # (2)先頭から比較して、末尾までの内容が等しいこと for (0..$#$a){ return 0 if $a->[$_] != $b->[$_]; } return 1; } というサブ

    一次元配列同士の比較のいろいろなやり方 - harupiyoの日記
  • 1