Создайте свои цвета из HSV / HSL, используя, в частности, значение оттенка. Затем конвертируйте в RGB.
См. Мой ответ здесь для получения дополнительной информации о HSV / HSL
Вы, наверное, хотите каждый раз как можно больше цветов.
Это можно сделать, сохранив очередь цветовых диапазонов.
Если очередь пуста, вернуть оттенок 0 и вставить пару (0, 360) в очередь.
В следующий раз, когда вы хотите, чтобы цвет вытолкнул элемент из очереди (0, 360) и вернул среднюю точку между этими значениями: 180. Затем вставьте (0, 180) и (180, 360) в очередь.
В следующий раз, когда вы хотите, чтобы цвет вытолкнул элемент из очереди (0, 180) и вернул среднюю точку между этими значениями: 90. Затем вставьте (0, 90) и (90, 180) в очередь.
В следующий раз, когда вы хотите, чтобы цвет вытолкнул элемент из очереди (180, 360) и вернул среднюю точку между этими значениями: 270. Затем вставьте (180, 270) и (270, 360) в очередь.
Продолжить этот процесс ...
У вас будут максимально широкие различимые цвета для каждого пользователя автоматически.