問題タブ [fnv]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - JavaでのFNVハッシュアルゴリズムの成熟した実装はありますか?
コンシステントハッシュシステムの実装で使用する高速ハッシュアルゴリズムの良い選択として、Fowler-Noll-Vo(FNV)が推奨されているのを見てきました。
しかし、それに適したJavaソースを見つけることができないようです。
iphone - Objective-C:Fowler–Noll–Vo(FNV)ハッシュの実装
iPhoneプロジェクトにHTTPコネクタがあり、クエリにはFowler–Noll–Vo(FNV)ハッシュを使用してユーザー名から設定されたパラメーターが必要です。
この時点でJava実装が機能しています。これは、次のコードです。
今iPhone側で、私はこれをしました:
このスクリプトでは、Javaの場合と同じ結果は得られません。
最初のループで、私はこれを取得します:
ハッシュ=0
hash = 100(最初の文字は「d」です)
hash = 1865261300(Javaのようにhash=100およびfnv_prime=-2128831035の場合)
誰かが私が欠けているものを見ますか?
助けてくれてありがとう!
delphi - FNVの実装
http://isthe.com/chongo/tech/comp/fnv/から FNV ハッシュを実装しようとしています。
そのページの PowerBasic のインライン asm を Delphi に変換しました。
指定されたファイルのサイズが 200KB を超える場合、出力は乱数 (ハッシュ) になります。何か不足していますか?
c - Cの文字列のFNVハッシュ
これがアルゴリズムの言うことです。
しかし、文字列のセットがある場合、FNV_offset_basisとして何を取る必要がありますか?
ハッシュされるデータの各オクテットの意味は何ですか。
また、テーブルのサイズはどうあるべきか、ハッシュされる文字列がN個あるとします。
文字列の変更を手伝ってください。
ありがとう。
c++ - 静的擬似乱数フィールド ジェネレーター
ゲーム用に作成した乱数ジェネレーターで問題が発生しています。高速な疑似ランダム フィールド ジェネレーターが必要です。暗号的に安全である必要はありません。ベクトルとシードを取り込んで、人間による簡単な検査を欺くのに十分なランダムなハッシュ値を与えるだけで済みます。
ただし、このコードは、2 次元ベクトルを指定して結果を 2 で変更すると、「疑似乱数」出力を生成できません。ほぼチェッカーボード パターンが生成されます。
理由はわかりませんが、正直なところ、それがわかればうれしいのですが、それがわからなくても気にすることはありません。ほとんどの場合、乱数を生成するこの方法はひどすぎると思ったので、この問題にアプローチする別の方法を知りたいと思いました。つまり、「何が間違っているのか」と尋ねるのではなく、この方法で乱数を生成するための優れた代替方法についてのリソースまたはポインターを本当に探していました。
基本的に、同じ入力を入力すると、元に戻すことができる「無限」の 2D ノイズ フィールド (ホワイト ノイズと考えてください) を生成しようとしています。
私が書いたコードは次のとおりです (これは fnv ハッシュであるはずです。テンプレートのことをお許しください。これをコードから取り出しただけです。後でクリーンアップします)。
php - FNVの「フレーバー」とPHPの実装
さまざまなデータ(URL、キーワードなど)のハッシュを生成するための要件の一部として、PHPベースのプロジェクトにFNVハッシュアルゴリズムを統合しようとしています。
NevenBoyanovによるこの実装を見ました。彼は、PHPの算術制限のために、乗算の代わりにビット単位のシフトと加算を使用することを余儀なくされたと述べました。彼の実装は正しいですか?私の知識はコンピュータサイエンスのこの分野ではどういうわけか限られているので、自分でそれを確認することはできません。
私が持っているもう一つの質問は、FNVのさまざまな「フレーバー」についてです。32ビット、64ビット、および128ビットのバリアントを提供することを確認しましたが、上記の実装を使用すると、常に8文字の16進ハッシュが得られます(dechex()を使用して整数の結果を16進に変換します)。
「Loremipsumdolorsit amet、consecteturadipiscingelit。Proinatlibero mi、quis luctus massa。」という入力が与えられると、次の16進数の結果が得られます。
- (32ビットオフセット)5b15c0f2
- (64ビットオフセット)6ea33cb5
なんでそうなの?64ビットFNVからの16文字の16進結果を期待しています。「フレーバー」は、使用される算術演算とシードの種類のみを指し、結果の長さは指しませんか?(つまり、64ビットFNVと言うと、ハッシュ関数は64ビット操作とシードを使用しますが、結果は32ビットのままです)
少しの啓蒙をいただければ幸いです:)
c# - FNV ハッシュの C# 実装
GetHashCode
オーバーライドからデータに対する迅速な比較/検索の実行まで、C# で適切なハッシュ アルゴリズムにアクセスする必要があるケースが数多くあります。
FNV ハッシュは、非常に簡単で優れた迅速なハッシュ アルゴリズムであることがわかりました。ただし、C# 実装の良い例を見たことがありません。
FNV-1a ハッシュ アルゴリズムのコアは次のとおりです。
したがって、クラスをオーバーライドGetHashCode
すると、次のようなことになります。
人々はこれについてどう思いますか?
c - FNV ハッシュをコンパイルして実行する方法
ソースコードとハッシュアルゴリズムがハッシュ衝突をどのように処理するかを観察するために、オープンソースのハッシュ関数を調べています。私は現在、低ビットハッシュ関数に興味があり、この別の投稿を通じて FNV を知りました。
しかし、この特定のソース コードを実際にテストする方法を知っている人はいますか? C ファイルのいくつかをコンパイルしようとしましたが、gcc からエラーが発生し続けます。
プログラムを実行してテストするために具体的にコンパイルする必要があるファイルについてのアイデアはありますか?
事前にご協力いただきありがとうございます
make check を実行すると、次のようになります。
多分これは私が取得することになっているものです.FNVをもっと徹底的に読んで、実際にテストを実行する方法を確認しますが、最初はそれを見ませんでした
delphi - FNV ハッシュは 64 ビット OS で異なる結果を生成します
FNV を使用して、32 ビット OS でファイルをハッシュしています。64 ビット OS でコードを使用すると、同じコードのハッシュ結果が異なるのはなぜですか?
これが私のコードです: