난 100,000 개 이하의 무작위 문자열 데이터베이스가 있고 각 문자열에서 1에서 500 사이의 숫자를 생성한다고 가정 해 보겠습니다.PHP에서 특정 값 범위 내의 문자열에서 고정 숫자를 생성하는 방법
내 메소드는 항상 동일한 숫자를 생성해야하며 (동일한 문자열을 사용) 숫자가 1에서 500 사이의 균등 분포 여야합니다.
아이디어가 있으십니까?
난 100,000 개 이하의 무작위 문자열 데이터베이스가 있고 각 문자열에서 1에서 500 사이의 숫자를 생성한다고 가정 해 보겠습니다.PHP에서 특정 값 범위 내의 문자열에서 고정 숫자를 생성하는 방법
내 메소드는 항상 동일한 숫자를 생성해야하며 (동일한 문자열을 사용) 숫자가 1에서 500 사이의 균등 분포 여야합니다.
아이디어가 있으십니까?
해시 기능이 필요합니다. 당신은 crc32
및 modulus operator를 사용할 수 있습니다
echo abs(crc32("hello world")) % 500 + 1;
crc32()는 부호있는 정수를 반환하므로 -1234567이 될 수 있습니다. 내 경우에 사용하기 위해 crc32() 함수 주위에 abs()를 추가하면 트릭이 생겼다. –
또한 같은 것을 사용할 수 있습니다 : 당신은 당신의 자신의 문자열 인코딩 방법을 찾고
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);
}
? : o –
CRC (PHP의 crc32() 함수 - http://php.net/manual/en/function.crc32.php)를 사용하여 범위에 맞게 결과를 조정하십시오. –
왜 -1 표가 사용됩니까? –