tl;dr Use the
Pick commandI'm not sure if I exactly understand the problem. Here is my example which probably isn't the best code. Note that I make the numbers into strings to prevent evaluation, which is a bit of a hack:
makeRdnProb[operations_] :=
With[{rndInt := ToString@RandomInteger[{0, 50}],
rndOperation := RandomChoice@operations},
rndInt ~ rndOperation ~ rndInt ~ rndOperation ~ rndInt
]
This function takes a list of operations like {Times, Plus, Subtract} , produces three random integers and inserts a random operation inbetween them. I've used the infix notation using the tilde (~) which might be a bit confusing if you haven't seen it before.
Note I wrote this function and tested it before writing any user interface. For most projects, don't worry about the user interface until you have functions that do the calculations you want. This separates your programming problem up into easier parts.
Once I had this function, I wrote a Manipulate like this:
Manipulate[
makeRdnProb[Pick[{Plus, Subtract}, {addition, subtraction}]],
{addition, {True, False}}, {subtraction, {True, False}}
]
The function doesn't handle the case where it is given an empty list. That would still need to be written for example.