...тест иногда не проходит. Как лучше тестировать подобные сущности?
1. Зафиксировать проблемную последовательность чисел, при которой тест не проходит.
2. Заменить генератор (псевдо)случайных чисел
тестовым двойником, способным по запросу генерировать проблемную последовательность. В данном случае подойдет, например, "диверсант" или "подставной объект".
3. Составить модульные тесты, подтверждающие действительное наличие ошибки при такой последовательности входных данных.
4. Локализовать и исправить ошибку (возможно, после рефакторинга). Убедиться, что тесты проходят.
5.
Обязательно включить эти тесты в набор регрессионных, чтобы в будущем эта ошибка не вернулась.
В общем, в данной ситуации замечательно сработает хрестоматийный паттерн исправления ошибок из руководств по управлению конфигурацией.
Вариант с seed в принципе тоже работоспособен, но слишком завязан на конкретную реализацию генератора последовательностей (псевдо)случайных чисел. Другая реализация при том же seed'е может породить совершенно другую последовательность. Или, если используется аппаратный генератор, такой подход тем более не сработает.