Добрый день! Может кто подскажет, как можно оптимизировать/изменить алгоритм.
Есть алгоритм генерирующий случайные перестановки из большого числа элементов. Эл-тов в районе 200 (может быть и поболее). Перестановок необходимо сгенерировать ~ 100 млн уникальных комбинаций (повторяющиеся варианты должны отбрасываться сразу на этапе генерации - т.е. необходимо определить что такой вариант уже был).
Сейчас:
1) Эл-ты хранятся в массиве.
2) Переносим их в коллекцию элементов.
3) По одному случайным образом их оттуда извлекаем - в итоге получаем перестановку в виде string.
4) Затем эту строку пытаемся добавить в коллекцию комбинаций (т.е. соответсвенно понимаем, была ли такой вариант уже).
5) Возвращаемся к п.2 - генерируем новую случайную комбинацию.
В итоге ПРОБЛЕМА - для работы не хватает RAM - 2 ГБ ОЗУ в один прекрасный момент целиком забиваются коллекцией из полученных вариантов перестановок.
Может у кого-нибудь есть идеи, как решить/обойти эту проблему?
Да, элементы беру минимальной длины.
Есть алгоритм генерирующий случайные перестановки из большого числа элементов. Эл-тов в районе 200 (может быть и поболее). Перестановок необходимо сгенерировать ~ 100 млн уникальных комбинаций (повторяющиеся варианты должны отбрасываться сразу на этапе генерации - т.е. необходимо определить что такой вариант уже был).
Сейчас:
1) Эл-ты хранятся в массиве.
2) Переносим их в коллекцию элементов.
3) По одному случайным образом их оттуда извлекаем - в итоге получаем перестановку в виде string.
4) Затем эту строку пытаемся добавить в коллекцию комбинаций (т.е. соответсвенно понимаем, была ли такой вариант уже).
5) Возвращаемся к п.2 - генерируем новую случайную комбинацию.
В итоге ПРОБЛЕМА - для работы не хватает RAM - 2 ГБ ОЗУ в один прекрасный момент целиком забиваются коллекцией из полученных вариантов перестановок.
Может у кого-нибудь есть идеи, как решить/обойти эту проблему?
Да, элементы беру минимальной длины.