Are you scripting this in a text editor, or are you using the QDK?
Question One:
1) Put all the rooms in a Rooms list.
2) Create another list initially empty: the Control Menu list.
3) Randomly select a room from the Rooms list, remove it from that list, and add it to the Control Menu list. Do this as many times as are necessary (say, five times if you want a selection of five random rooms).
4) Use the Control Menu list to let the player choose a room to travel to.
5) When the player returns to the control room, move all the rooms in the Control Menu list back into the Rooms list, except for the room they just visited.
6) Repeat from step 3.
Question Two:
1) Hide all the objects in a room, upon entry to that room.
2) Put all the objects in the room in a RoomObjects list.
3) Randomly select an object from the RoomObjects list, remove it from that list, and unhide it. Do this as many times as you want objects to appear.
Quest doesn't have built-in list structures, so you'll have to create them yourself. Alternately, if you're not afraid of hand-scripting in a text editor, you can use my
List Library Lite. You'll have to read the documentation to see how to use it. The full version of the list library has a bit more functionality (including a GetRandom function to return a random item in a list), but I have yet to write the documentation for it.
The above is just one solution (and is how I would attempt to do it). Others may have different (even better!) ideas.