私は、Park-Miller-Carta LCGや、Park-Miller-Carta LCGなどのprngを出力する目的で、utf8文字列のダイジェストとして31/32ビットの符号付き/符号なし整数を生成するハッシングアルゴリズムを探しています。メルセンヌ・ツイスター。文字列でprngをシードするための良いハッシュアルゴリズムは何ですか?
私はFNV1とFNV1aを調べましたが、最後の文字が異なる類似した文字列に対して非常に近い値を提供しています。私は入力文字列の最小限の変更で根本的に変化する低衝突ハッシュを持っていたいと思います。パフォーマンスは問題ではありません。
私の現在のアプローチは、乗数として、文字コードと素数を使用して汚れたLCGで構成されています
a = 524287;
for (i = 0; i < n; i ++)
a = (a * string.charCodeAt (i) * 16807 + 524287) % 2147483647;
私は任意のより良い代替手段を教えてください。