2013-03-21 3 views
0

난 100,000 개 이하의 무작위 문자열 데이터베이스가 있고 각 문자열에서 1에서 500 사이의 숫자를 생성한다고 가정 해 보겠습니다.PHP에서 특정 값 범위 내의 문자열에서 고정 숫자를 생성하는 방법

내 메소드는 항상 동일한 숫자를 생성해야하며 (동일한 문자열을 사용) 숫자가 1에서 500 사이의 균등 분포 여야합니다.

아이디어가 있으십니까?

+0

? : o –

+2

CRC (PHP의 crc32() 함수 - http://php.net/manual/en/function.crc32.php)를 사용하여 범위에 맞게 결과를 조정하십시오. –

+0

왜 -1 표가 사용됩니까? –

답변

1

해시 기능이 필요합니다. 당신은 crc32modulus operator를 사용할 수 있습니다

echo abs(crc32("hello world")) % 500 + 1; 
+1

crc32()는 부호있는 정수를 반환하므로 -1234567이 될 수 있습니다. 내 경우에 사용하기 위해 crc32() 함수 주위에 abs()를 추가하면 트릭이 생겼다. –

0

또한 같은 것을 사용할 수 있습니다 : 당신은 당신의 자신의 문자열 인코딩 방법을 찾고

function string_to_decimal($hex_str) 
{ 
    $arr = str_split($hex_str, 4); 
    foreach ($arr as $grp) { 
     $dec[] = str_pad(hexdec($grp), 5, '0', STR_PAD_LEFT); 
    } 
    return implode('', $dec); 
} 
관련 문제