|
|
|
хэширование. Вопрос.
|
|||
|---|---|---|---|
|
#18+
Имеется массив строк (очень много). Нужно создать по каждой строке хэш-код с помощью хэш-функции, причем хэш-функция (неважно какая) должна выдавать хэш-код всего 10 видов (напр., от 0 до 9). Соответсвенно каждая строка в массиве должна будет содержать хэш-код из этих 10 видов (напр., йцк - 2; ew - 4, 457 - 3, wr - 23 и т. д.). Распределение всех строк по хэш-кодам должно быть равномерное. Кто знает как реализовать хэш-функцию такого типа? Буду премного благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2006, 12:42 |
|
||
|
хэширование. Вопрос.
|
|||
|---|---|---|---|
|
#18+
Извиняюсь за опечатку, 23 - это опечатка. Постараюсь написать попонятнее. Самый главный вопрос у меня состоит в том, чтобы данная хеш-функция не только определяла для каждой строки хеш-код, а чтобы в итоге прогона хеш-функции для всех строк к каждому хеш-коду относилось примерно равное количество строк. Например, имеется 80000 строк. Имеется 10 возможных хеш-кодов (напр, 0,1,2,3,4,5,6,7,8,9). В итоге должно получится, чтобы к каждому хеш-коду было привязано равное количество строк (примерно), т.е. 8000 к 0, 8000 к 1, 8000 к 2 и т.д. Это конечно в идеале. Но желательно, чтобы разброс был не более чем на 2000 (если рассматривать данный пример). Напр., 7000 к 0, 8500 к 1, 9000 к 2 , 7500 к 3 и т.д. Конечно можно создать какую-либо функцию, которая берет несколько бит из строки и потом брать остаток от деления этих бит на 10, в итоге мы получим привязку всего к 10 хеш-кодам, но привязка будет не равномерной, т.е. 20000 строк будет привязано к хешу - 0, 30000 - к хешу 1, 2000 к 2, 10000 к 3 и т.д. А мне нужно равномерное. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2006, 16:05 |
|
||
|
хэширование. Вопрос.
|
|||
|---|---|---|---|
|
#18+
Ты же понимаешь, что будет зависимость от входных строк (подадут тебе на вход половину одинаковых - и плакала твоя равномерность на выходе). Так что годится любая нормальная хеш-функция (MD5, SHA-1 - примеры реализации можно найти в сети) либо собственноручно написанная / измененная аналогичная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2006, 12:24 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=344&tid=2030863]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 336ms |

| 0 / 0 |
