Генерация случайного математического выражения на основе результата?
Ваш алгоритм нужно совсем немного доработать: К каждому из чисел в полученном выражении рекурсивно применить ту же функцию генерации выражения, и, полученные последовательности действий, склеить как склеивают строки (удобно для этого использовать связанные списки).
Настройка сложности может заключаться в задании фиксированной глубины рекурсии или в задании коэффициента распределения случайной величины, которая определяет, следует ли на конкретном шаге уходить дальше в глубь рекурсии, или вернуть текущий результат наверх.
И расстановку скобок совсем несложно прикрутить.
Все очень просто, после получения каждого значения инициализируйте генератор случайных чисел