Начните с чтения местного Регламента.
Когда вы регистрировались, вы обещали выполнять Регламент. Ваше сообщение нарушило сразу несколько параграфов Регламента -2.2, 3.1, 3.4, 3.6, 5.12 и др.
Если вы будете продолжать нарушать Регламент, ваши вопросы могут быть удалены, а аккаунт заблокирован модераторами временно или навсегда.
Будьте благоразумны.
У вас в функции три раза происходит цикл и из них два раза цикл в цикле. Это многовато. Плюс внутри одного такого цикла-матрешки еще и множество вызовов if, которые довольно дорогие.
Вам надо подумать, как это оптимизировать.
Кроме того
, у вас одна гигантская функция, с которой работать чудовищно неудобно, ее надо бы разделить на несколько функций; кроме того, названия переменных и функции неудобные и невнятные, читать код трудно. Это не особо влияет на скорость, но копаться в этом вообще не хочется.
Также полагаю, что вы хотели бы, чтобы выбранные не повторялись (random может вернуть n раз одно и то же) и вы придете со следующим вопросом «как сделать, чтобы случайности не повторялись»
На это я предложу делать shuffle списка friends и затем итерировать сам случайно сортированный список в цикле for.