Please find below my suggestion about your problem.
buildLeft[randList_, ratorList_] :=
Append[Flatten@
Transpose[{Take[randList, Length@randList - 1], ratorList}] ,
Last@randList];
leftEqBuilder[randList_, ratorList_] :=
StringJoin[
If[MemberQ[randList, #], ToString@#, #] & /@
buildLeft[randList, ratorList]];
solver[randList_, ratorList_, rhs_] :=
Module[{ tup = Tuples[ratorList, Length[randList] - 1]},
leftEqBuilder[randList,
SelectFirst[tup,
ToExpression[leftEqBuilder[randList, #]] == rhs &]]];
solutionQ[str_, rhs_] := ToExpression@str == rhs;
Tests
solver[{1, 2, 3, 4}, {"+", "-"}, 10]
(* 1+2+3+4 *)
solver[{75, 4, 10, 6, 2, 2}, {"+", "-", "*", "/"}, 286]
(* 75*4+10-6*2*2 *)
Check
solutionQ[solver[{1, 2, 3, 4}, {"+", "-"}, 10],10]
(* True *)
solutionQ[solver[{75, 4, 10, 6, 2, 2}, {"+", "-", "*", "/"}, 286], 286]
(* True *)
Note that the solution provided is quite general: The operands do not have to be numbers. The operators need only to be compatible with the operands.
Thanks,