나는 Park-Miller-Carta LCG 또는 a와 같은 prng를 시드하기 위해 출력을 사용하는 목적으로 utf8 문자열의 다이제스트로 31/32 비트 부호있는/부호없는 정수를 생성하는 해시 알고리즘을 찾고 있습니다. 메르 센 - 트위스터.문자열로 prng를 시드하기위한 좋은 해싱 알고리즘은 무엇입니까?
FNV1과 FNV1a를 살펴 보았지만 비슷한 문자가 마지막 문자와 다른 매우 가까운 값을 제공합니다. 내가 입력 문자열에 최소한의 수정시 근본적으로 변경 낮은 충돌 해시 싶습니다. 성능은 문제가되지 않습니다.
a = 524287;
for (i = 0; i < n; i ++)
a = (a * string.charCodeAt (i) * 16807 + 524287) % 2147483647;
이 나를 더 나은 대안으로 알려 주시기 바랍니다 :
내 현재의 접근 방식은 문자 코드와 멀티 플라이어와 같은 소수를 사용하는 더러운 LCG에있다.