Как рандомизировать по хешу (в Java)? - PullRequest
1 голос
/ 03 ноября 2010

У меня есть ArrayList of Strings. Мне нужно рандомизировать его по "номеру хеша". Пример:

ArrayList: «Word», «Simple», «Another», «Demo» хеш: 1234567

В результате рандомизации я хочу сказать: «Простой», «Слово», «Демо», «Другой»

с другим хешем: 542345 Я хочу получить: «Слово», «Другой», «Демо», «Простой»

Но требования таковы, что когда я всегда сортирую по этому хешу, порядок рандомизации всегда будет ОДНИМ для этого ХЭШ.

Есть предложения? Adviscs

Ответы [ 3 ]

5 голосов
/ 03 ноября 2010

Вы можете shuffle a Список, используя объект Random, который вы инициализируете с помощью хэша.

Collections.shuffle( myList, new Random(12345) );

Когда тот же самый хэш используется для заполнения объекта Random, порядок случайного воспроизведенияполучается то же самое.

1 голос
/ 03 ноября 2010

Использовать "хэш" (что угодно, чем означает) в качестве начального числа для генератора случайных чисел?

0 голосов
/ 03 ноября 2010

Вы можете сделать это:

value1 = "hello" --> value1.hashCode() = 99162322  
value2 = "hello" --> value2.hashCode() = 99162322

Итак, если вам «действительно» нужно использовать Hash, то вы можете перебрать ArrayList, суммировать все сгенерированные значения хеша и сохранить его.

Теперь, когда вам нужно убедиться, что хэш-код одинаков или нет, снова выполните итерацию по новому массиву, сгенерируйте хэш-код (), суммируйте его и проверьте.

Но это перебор.Вы можете просто использовать shuffle (), как предложено Биллом.

...