Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Генерация полурандомного числа в зависимости от текста
Форумы портала PHP.SU » » Вопросы новичков » Генерация полурандомного числа в зависимости от текста

Страниц (1): [1]
 

1. valet - 21 Июля, 2012 - 13:23:33 - перейти к сообщению
Хотелось бы написать функцию, которая возвращает "полурандомное" число в диапазоне от 0 до 9 в зависимости от текстового входного параметра.
"Полурандомным" я называю число, которое генерится рандомно, но для конкретного набора символов оно всегда тоже самое.
То есть например, если функция get_polurandom("мама") возвращает например 5, то при входном параметре "мама" оно всегда будет именно 5, если get_polurandom("папа") возвращает скажем 7 - то это всегда 7 для входного параметра "папа".

Сам не php-программист, крутится в голове что это как-то несложно очень, но не могу понять как это сделать.
Заранее спасибо.
2. SAD - 21 Июля, 2012 - 13:28:39 - перейти к сообщению
я бы сложил порядковые номера букв входящего текста в алфавите, а потом поделил бы на кол-во букв в слове, а остатком от деления будет наше полурандомное число
3. Hawkmoth - 21 Июля, 2012 - 13:34:46 - перейти к сообщению
valet пишет:
"Полурандомным" я называю число, которое генерится рандомно, но для конкретного набора символов оно всегда тоже самое.


Напоминает хеш. Может, хешировать (например, той же md5), а потом тащить из нее первую цифру.
4. SAD - 21 Июля, 2012 - 13:36:30 - перейти к сообщению
как вариант

если нет цифр, то возвращать 0
5. valet - 21 Июля, 2012 - 13:39:24 - перейти к сообщению
SAD, Hawkmoth, спасибо. Хорошие идеи. Сейчас буду что-то пробовать.
Больше нравится с хешем, не уверен что с вариантом от SAD мы гарантируем равномерное распределение (могу ошибаться), да и с хешем как-то попроще смотрится.
6. valet - 21 Июля, 2012 - 15:40:25 - перейти к сообщению
Может кому-то пригодится Улыбка поэтому запощу тут как я это сделал.

PHP:
скопировать код в буфер обмена
  1.         public function get_polurandom($text)
  2.         {
  3.                 $result = md5($text);
  4.                 preg_match_all('/\d/', $result, $matches);
  5.                 return $matches;
  6.         }
  7.  

получать такое значение можно так например:
PHP:
скопировать код в буфер обмена
  1. $matches = get_polurandom("текст");
  2. echo $matches[0][0];
  3. echo $matches[0][1];
  4. //...
  5.  

 

Powered by ExBB FM 1.0 RC1