読者です 読者をやめる 読者になる 読者になる

write ahead log

ロールフォワード用

ピアソンハッシュ関数(?)を書いてみた(golangで)

golang 作った/試した

子供が熱出して休暇もらったので, おかあさんといっしょを見ながらこれ書いてます.

わけあって8bit出力のハッシュ関数を探していたんですが, 流石に標準ではなさそうなので簡単でそこそこ良いものを探していました.
(32bitならFNVがありました.そのうち使い方をメモしておこうと思います.)

Wikipediaに行くと色々なハッシュ関数のリストがありました.

List of hash functions - wikipedia

8bit出力出来るものがあまりないのですが, 非暗号的ハッシュ関数の中にPearson hashingというものがあります.

恐らくピアソンハッシングと呼ぶのではないかと思います.(有名なんですかね?)

さらにWikipediaを辿ると詳しい説明が載っています.

Pearson hashing - Wikipedia

いやー, Wikipediaには頼りっぱなしです.寄付してよかったです.

拙い英語力で読む限り

  • 8bitレジスタしかない
  • マシンパワーがしょぼい
  • 暗号的である必要がない(意図的に衝突させられてもOK)

などといった限定条件下では効果的なハッシュ関数っぽいですね.

今回使いたかった用途にピッタリですし, サンプルもあったのでちょっとgolangで実装してみました.

大したコードでもないのでgistに入れました.

Pearson hashing sample by golang

実行結果はこちら

f:id:twinbird_htn:20170217230157p:plain

そういえばgistってライセンスどうなるんですかね.

まぁ責任は取れないですけど, ご自由にどうぞ.