Здравствуйте.
Нужно сделать функцию, на вход которой дается строка, а на выходе получается число, которое
всегда одно и то же для этой конкретной строки. Число должно лежать в диапазоне от 0 до PHP_INT_MAX.
Результаты должны распределяться равномерно. Например, если подавать на вход строковые представления чисел от 0 до PHP_INT_MAX, чтобы результаты функции в идеале повторялись как можно меньшее количество раз.
Например:
f('1') // 6484845
f('11') // 2156165
f('111') // 59544206
Была идея сделать так:
Брать первые 7 байт md5 от входной строки и переводить в 10 СС. Но, насколько я знаю, в результатах md5 не часто бывает так, чтобы подряд шло много нулей. В результате этого, числа, построенные по этому алгоритму будут иметь перекос в большую сторону, и почти не будет чисел, как мне кажется, ближе к 0.