The above is correct, an array, then simply choosing a random number within the array to move the player to would be the best way, however in execution there seems to be a bit of difficulty. Typically you would simply give each room in your game a room property, and the code would work like this...
set numeric <n; 0>
for each object in game if property <#quest.thing#; room> then {
inc <n>
set string <room[n]; #quest.thing#>
}
set numeric <x; $rand(1;%n%)$>
goto <#room[x]#>
However it appears in the newest iteration of Quest, the FOR EACH OBJECT IN GAME code, no longer goes through rooms, so we are effectively left without a way to search rooms for qualifiers. I suspect this is an oversight and a bug on Alex's part. I'm thinking up an automated work around but it will be a little tricky.
There is still the option of doing this manually though, which just means coding the array by hand, which is still pretty simple. You'll just put each room of the house into an array called house, then wrap that in a command or conditional or however you want to use it.
command <stagger> {
set string <house[1]; login>
set string <house[2]; logout>
set string <house[3]; other room>
set numeric <n; $rand(1;3)$>
msg <You stagger about drunken.>
goto <#house[n]#>
}