スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

重率をかけたハッシュ値生成関数

語順が異なる場合に、異なるハッシュ値が生成されるようにする。

文字列のコードに重率を掛けてハッシュ値を生成する。
ここでは、重率が16の7乗まで達したら、再び16の0乗に戻す。 "<<4*weight"は16のweight乗と同じ。


1 #!/usr/local/bin/python
2 # coding: utf-8
3
4 def makehash2(string , hashmax):
5 hash = 0
6 weight = 0
7
8 for char in string:
9 if weight > 7 :
10 weight = 0
11 hash += (ord(char) << 4 * weight)
12
13 weight += 1
14
15 return hash % hashmax
16
17
18 if __name__ == "__main__":
19 hashmax = 100
20 string = "plum is plum<---hashcode:"
21 print string + str(makehash2(string, hashmax))
22 string = "lump is lump<---hashcode:"
23 print string + str(makehash2(string, hashmax))


実行結果

plum is plum<---hashcode:90
lump is lump<---hashcode:50
スポンサーサイト
プロフィール

tjnet777

Author:tjnet777
Solaris, VPNのサポート業務を1年

金融系SIerで業務アプリの開発、メンテを3年半

離職して大学院大学 1年生

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。