min_karma = min(karmas)
max_karma = max(karmas)
normalized = (karma - min_karma) / (max_karma - min_karma)
У этого свойства есть то, что пользователи с кармой = min_karma получают нормализованную карму 0, а пользователи с кармой = max_karma получают 1. Другие линейно распределяются между ними. Вам придется отдельно обрабатывать особый случай, когда все пользователи имеют одинаковую карму.
Если вы хотите нелинейное распределение, вы можете использовать логарифмическую функцию:
normalized = (log(karma) - log(min_karma)) / (log(max_karma) - log(min_karma))
В этом случае важно, чтобы карма никогда не падала ниже 1, поскольку это может исказить результаты.