Код из строки

fire-one

Новичок
Код из строки

Доброго времени суток

Задача следующая

На входе имеем строку произвольно длины
На выходе имеем число, которое находится в определенных рамках

Допустим строка "бегемот" возвращает 1
Строка "варкрафт" 2

Уже голову поломал
Кто подскажет возможное решение ?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
fire-one
Что именно ты хочешь сделать?
Опиши задачу, а не то, что ты пытаешься сделать с строками.
 

fire-one

Новичок
каждой строке соответствует запись в базе
строк - неограниченное количество.

но каждый раз должно выпасть одна и та же соответствующая запись из базы

-~{}~ 19.04.10 21:35:

моя задача - сделать из строки цифровой хеш, который будет лежать в пределах от Х до У
 

fire-one

Новичок
PHP:
function get_str_hash($string,$max){
    for ($i=0; $i < strlen($string); $i++)  {
        $hash .= ord(substr($string,$i));   
    }
    while($hash>$max){
    	$dif = $hash - $max;
    	if($dif > 1000000000000000){
	    	$hash = floor(substr($hash,0,1) + substr($hash,1,5) / 3331). substr($hash,13);
    	}elseif($dif > 10000000000000){
	    	$hash = floor(substr($hash,0,1) + substr($hash,1,4) / 3331). substr($hash,11);
    	}elseif($dif > 100000000000){
	    	$hash = floor(substr($hash,0,1) + substr($hash,1,4) / 3331). substr($hash,10);
    	}elseif($dif > 1000000000){
	    	$hash = floor(substr($hash,0,1) + substr($hash,1,3) / 3331). substr($hash,7);
    	}elseif($dif > 10000){
	    	$hash = floor(substr($hash,0,1) + substr($hash,2,3) / 333). substr($hash,4);
    	}else{
	    	$hash = floor(substr($hash,0,1) + substr($hash,1,1) / 3). substr($hash,2);
    	}
    }
    return $hash;
}
выполняется относительно быстро

недостаток. при увеличении граничного значения max выпадают не все значения

-~{}~ 20.04.10 10:11:

Автор оригинала: Mr_Max
fire-one
Это чем-то не подошло?
http://phpclub.ru/talk/showthread.php?postid=897677#post897677
да нужен хеш состоящий из цифр и определенной величины
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
fire-one
чем обусловлена такая необходимость, что вот только цифры?

PS: md5 генерит хэш строго 32 символа
 

fixxxer

К.О.
Партнер клуба
>>да нужен хеш состоящий из цифр и определенной величины

crc32, но сам понимаешь что будут коллизии
 

Вурдалак

Продвинутый новичок
crc32() + % для получения числа из конкретного диапазона. Либо md5() + substr() + hexdec() + %
 
Сверху