/**
* CRC32 Hash function
* @param $str
* @return int
*/
function hash32($str)
{
return crc32($str) >> 16 & 0x7FFFFFFF;
}
/**
* Times33 Hash function
* @param $str
* @return int
*/
function hash33($str)
{
$hash = 0;
for($i=0; $i
$hash += 33 * $hash + ord($str{$i});
}
return $hash & 0x7FFFFFFF;
}
$n = 10;
// Test Case 1
$stat = array();
for($i=0; $i<10000; $i++){
$str = substr(md5(microtime(true)), 0, 8);
$p = hash32($str) % $n;
if(isset($stat[$p])){
$stat[$p]++;
}else{
$stat[$p] = 1;
}
}
print_r($stat);
// Test Case 2
$stat = array();
for($i=0; $i<10000; $i++){
$str = substr(md5(microtime(true)), 0, 8);
$p = hash33($str) % $n;
if(isset($stat[$p])){
$stat[$p]++;
}else{
$stat[$p] = 1;
}
}
print_r($stat);