The first and biggest step would be randomly making an 11x11 grid of mist generators. I'm not sure if that's the ideal way to call randominteger(120). A better way than the mist generators would probably to poll waving water or a pacing creature to generate a row and column. Not sure if that's totally random, but it's what I'd do. I do creature logic, which makes my designs huge. There's probably a better way, but...
Here's my row/column random generator:
#X# #X#
#h############h#
##^d h^#
#h###########d#
# # # #
Here's one arm of a loop for a goblin to pace. This loop should have 11 arms. Each pressure plate is linked to adjacent hatches and door and to one door I'm about to show. X paths to map edge. Don't try to sample the RNG too often-- maybe once every 3 days should be safe, but remember, it relies on the time it's sampled being random, and sampling patterns will show through to the numbers it generates.
# ##d #
# d^## # select row 2
# ##h# #
# ##X# #
## ##h# #
###d d^## # select row 1
Xh^####d# #
###h# ## #
## # return to reset for next run
########
This shows the doors the previous loop should connect to. This diagram shows 2 doors only; there should be 11. Goblin waits at row selection plate for door open, then returns to reset for next run. There should be two of these circuits, one for row, one for column, but they shouldn't run at the same time, else you'll always get 3,3 or 4,4 (etc). Door from reset is opened by lever, so that it gets opened at a random time, but only one path will exist for the goblin, and he'll choose a random row/column for you. Either link the selection plate to memory, or link all of the doors that lead from the selection plate to reset to a lever that you only throw once both row and column are decided.
Row/column selection activates one of 121 screw pumps that move fluid into a reservoir. Each pump has (at least) two gears connecting it to power; default state of these gears is off. Selection of row 1 activates the row-gear of the 11 pumps in row 1 (duh). Selection of column 2 activates the column-gear of the 11 pumps in column 2. The intersection of those is a single pump, located at 1,2.
This system doesn't rule out already placed mines as potential locations. That's possible too, but it's more complicated.
Here's 3-bit incrementing goblin memory:
### ### ###
###X# ###X# ###X#
##h#h# ##h#h# ##h#h#
## #^#### #^#### #^##
#dh#hd##dh#hd##dh#hd#
##^# ####^#^####^#^##
#h#h## #h#h####h#h##
#X### #X### #X###
### ### ###
This is designed for multipurpose, so it has unnecessary features. NE and SW ^s are linked to all adjacent hatches.
SE^ is linked to the central hatches of the memory cell immediately to the right. True is north, south is false.
1 goblin travels each loop clockwise, and increments ripple through from right to left.
Every time you send an open-close of the two central hatches on the rightmost bit, you increment the value by 1. How do you turn the open signal generated by the ^ into an open-close? With this:
#### ####
#Xh#####hX#
###^d^h^###
#h#####h#
## ^ ##
#######
Every time you send an open to a door (and a close to the hatch permitting return to reset), you get an open-close back. When you send a close (to the door and hatch) you get an open-close again, if you so need it.
You need 1 goblin RNG (0-10), 1 row picker, 1 column picker, 121 reservoirs, 121 pumps each with 2-operand AND gears, 121 3-bit incremementing memory circuits, and 121 signal converters. You also need a way to reset your memory so you can run it again. I didn't demonstrate output, but hopefully that part is obvious (if bit is 111, value is 7, run it through a binary->octal if you want, light up bridges like they're cells in a cheap calculator's LCD display). Power's not really a problem because only 1 pump (and up to 12 gears) will be active at a time. This isn't optimized, it's just throwing together stuff that I have handy, so chances are you could find a way around needing the signal converters that was a lot simpler.
Oh-- how do you drop the magma on your head?
####
#h^#
####
z=0
....
.l..
....
z= -1
EDIT: I have a feeling I screwed up the explanation of the memory design. I think you wouldn't want to use 3 bits anyways-- you'd use 1 bit of octal memory, a goblin on a 16-step, 8 state loop. That way you wouldn't need to convert to octal for output either.