human
BloomfilterのPython実装のPython実装を提供できますか
gpt
Hashlibをインポートします
文字列をインポートします
ランダムをインポートします
インポート時間

クラスブロックフィルター：

  ＃カスタムアレイサイズとハッシュ関数でブルーフィルターを初期化します。
  def __init __（self、size = 1000、have = 3）：
    self.size = size
    self.array = [false] *サイズ
    self.hashs = [hashlib.md5、hashlib.sha1、hashlib.sha224、hashlib.sha256、hashlib.sha384]
    ハッシュ> 5の場合：
      print（ 'ハッシュ関数の量は5未満である必要があります。
    それ以外：
      self.hashs = self.hashs [：hash]
    戻る

  ＃ハッシュ関数でデータを変換し、フィルターを設定します。
  def add_data（self、data）：
    data = data.encode（ 'utf-8'）
    hash_funcのself.hashs：
      idx = int（have_func（data）.hexdigest（）、16）％self.size
      self.array [idx] = true
    戻る

  ＃データがフィルターに合格できるかどうかを確認します。
  def is_exist（self、data）：
    data = data.encode（ 'utf-8'）
    hash_funcのself.hashs：
      idx = int（have_func（data）.hexdigest（）、16）％self.size
      self.array [idx]でない場合：
        falseを返します
    trueを返します

  ＃フィルターの故障率をテストします。
  def test（self）：
    start_time = time.time（）
    true = len（[bit for self.arrayの場合はビットの場合]）
    print（ '{} trueが{} bit。'。形式（true、self.size））にtrueがあります）
    print（ '{} hash関数で、計算された偽陰性率は{：2.5F}％治す

    失敗、テスト= 0、1000000
    _ in range（テスト）：
      block.is_exist（randomstring（random.randint（5,15）））:)：
        失敗 += 1
    print（ '{}テストの場合、偽陰性率は{：2.5f}％。'。形式（テスト、政府 /テスト * 100））です）
    print（ 'このテストは{：.2f} s'.format（time.time（）-start_time）を取得します）

＃小文字で文字列をランダムに生成します
def randomstring（lendth）：
      文字= string.ascii_lowercase
      return '' .join（random.choice（文字）範囲（長さ））

block = blockfilter（）
テキスト= []
_ on範囲（100）：
  text = randomstring（random.randint（5,15））
  texts.append（テキスト）
  block.add_data（テキスト）
print（block.is_exist（texts [0]））
print（block.is_exist（randomstring（10）））
block.test（）