![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
ハッシュ検索がどういうものか理解したばかりです。
概略がわかっただけで、それ以上のことはわかっていません。
VBAでは、Dictionaryを使うと、ハッシュ検索らしきことがやれるそうですが、Dictionaryを使わずにやろうとすると、ハッシュ関数が必要になってくると思います。
VBAにはハッシュ関数というものは用意されていないのですよね?
また、他の言語にはハッシュ関数が用意されているのですよね?
ハッシュ関数がなければ、ハッシュ検索はできないということですよね?
それともVBAの中で、ハッシュ関数と同じ機能を果たす式を作れば良いのでしょうか?
可能ならその式はどんな式になるのでしょうか?
No.1ベストアンサー
- 回答日時:
少々誤解があります。
何かのデータを使い、そのデータ固有の値を求めるような関数は、全て「ハッシュ関数」と言えます。
ハッシュを効率よく使うために、いくつかの性質が求められる、というだけです。
検索用に使うハッシュ関数は、決まったものはありません。
扱うデータによって「最適」な計算が違うからです。
既存のものを使うのでなければ、自作すればいいのです。
また、検索だけがハッシュの使い方ではありません。
例えば、データが正しいかどうかの検証にも使われます。
100MBのデータをダウンロードして、失敗してないか確認する場合
ダウンロードした100MBとサーバーにある100MBを1バイトずつ比較する、なんてことは非現実的です。比較のために100MB通信しなおすことになるのですから。
そこで、ハッシュを計算して、比較すれば、少ないデータ量で確認できます(ハッシュが同じ場合は、確実に同じ、とは言えないが、ハッシュが違えば失敗していることが100%判明する)
このような使い方をするとき、その計算方法がバラバラでは意味がありません。
そこで、同じ計算をするために、MD5とかSHAとか言った決まった方法を使います。
これらも「ハッシュ関数」です。プログラミング言語によっては、用意されているので、自作の必要はありません。
では、後者のハッシュ関数を、検索用に使えばいいか、というと、そう単純ではありません。
例えば、MD5は128ビットの値を返します。単純計算で、2の128乗 通りです。
それだけのハッシュテーブル作るのは無駄だし、普通のPCでは無理です。
参考URL:http://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%83% …
回答ありがとうございます。
これでまた少し理解が深まりました。
ということで、VBAでお遊びでハッシュ関数を作成し、ハッシュ検索をするコード書くとどうなるのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(コンピューター・テクノロジー) なぜデータの整合性を確認する時はハッシュ値で確認するのでしょうか?ハッシュ値は衝突する可能性があるの 5 2023/07/05 20:38
- その他(コンピューター・テクノロジー) ハッシュ値を取ったらその取ったハッシュ値はどのように保管すればよいのでしょうか?ハッシュ値のデータす 2 2023/07/02 19:40
- その他(コンピューター・テクノロジー) exFATの外付けSSDからパソコンのNTFSの内蔵ストレージにコピーした場合はコピーしたデータのハ 2 2023/08/09 19:51
- その他(コンピューター・テクノロジー) インターネットを使わずにハッシュ値を取ることは可能なのでしょうか? 1 2023/06/27 20:27
- その他(コンピューター・テクノロジー) ベリファイの機能がある製品やソフトが世の中には多くありますが、それらのベリファイは何でベリファイして 3 2023/06/28 19:49
- その他(コンピューター・テクノロジー) 3台の外付けHDDにバックアップして1年放置した後にその3台の外付けHDDのデータが壊れてないかを知 3 2023/07/02 21:27
- その他(コンピューター・テクノロジー) 外付けHDDや外付けSSDのデータが壊れていないかをハッシュ値で確認する方法は確実ではないって本当で 3 2023/06/26 20:42
- その他(コンピューター・テクノロジー) この用途で快適に使うにはどのくらいのスペックのパソコンを買うべきなのでしょうか? ・100ギガのデー 4 2023/07/20 19:50
- その他(コンピューター・テクノロジー) パソコンは同時に作業をすることが出来るらしいですが以下の動作の全てを同時にすることも可能なのですか? 5 2023/07/22 11:20
- その他(セキュリティ) デジタル署名について 4 2022/08/12 14:54
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
文字数の短いユニークなID生成
-
ハッシュ検索はなぜ速い
-
Perlでハッシュや配列で重複す...
-
短いハッシュの作り方
-
多次元配列から重複を削除
-
チェックデジットについて
-
まったく同じファイルのハッシ...
-
オフィス2013のプロダクトキー...
-
ハッシュリストって単にハッシ...
-
UWSCの終了の仕方
-
VBAでの一時停止と再開の方法
-
画面を強制的に再描画させる方法
-
【VBA】全て空白のセルの列の非...
-
DoEventsが必要な理由について
-
範囲指定したセルを1つずつ飛...
-
VBのReturnの使い方
-
フラグについて
-
For文を使った九九表の作成
-
素数の個数を求めるプログラミング
-
C#で別のフォームのprogress ba...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ハッシュ検索はなぜ速い
-
文字列を変数名として扱う方法
-
まったく同じファイルのハッシ...
-
チェックデジットについて
-
列挙型と連想配列の違いを教え...
-
英語でのシャープとコメの呼び...
-
ハッシュ値が一致したデータは...
-
重複ファイルを削除したいので...
-
ハッシュの考え方、使用例を分...
-
ハッシュのハッシュを実現したい。
-
ハッシュリストって単にハッシ...
-
短いハッシュの作り方
-
データベースでユーザーのパス...
-
*(アスタリスク)の意味
-
多次元配列から重複を削除
-
ハッシュ値によるファイルの同...
-
perlで配列名を動的に作り出したい
-
Perlでハッシュや配列で重複す...
-
ハッシュマーク以降のアドレス取得
-
連想配列のサイズ制限
おすすめ情報