IMHO идея в том, чтобы 1-й юзер (элемент) появлялся в 5% показов, 2-й в 7%, 3-й в 15%, 4-й в 10% и т.п. Ну или для простоты юзать не % (сумма которых должна быть 100%) а веса - 5, 7, 15, 10....
Итого, задача сводится к суммированию весов, генерации случайного числа от 1 до суммы и потом последовательным отниманием в цикле весов, пока остаток положительный. Как он стал отрицательным, так получили искомый элемент.