Generate Random Boggle Board Generate a 4x12 grid of letters / spaces:

Each die should appear precisely once, location randomly chosen.  Locations should be approximate a uniform random permutation of the dice.  Display a random (again, approximately uniform) face of each die.  Left-justify the face in the 3-character window.  For example,

A  E  A  A
E  C  D  E
D  A  Qu E
E  A  H  D


Is a non-randomized board in the format I want.  Trailing space is allowed.

The dice: 

A  A  E  E  G  N
E  L  R  T  T  Y
A  O  O  T  T  W
A  B  B  J  O  O
E  H  R  T  V  W
C  I  M  O  T  U
D  I  S  T  T  Y
E  I  O  S  S  T
D  E  L  R  V  Y
A  C  H  O  P  S
H  I  M  N  Qu U
E  E  I  N  S  U
E  E  G  H  N  W
A  F  F  K  P  S
H  L  N  N  R  Z
D  E  I  L  R  X


Amusing fact: there is only 1 K in the set.  What other letter exclusively shares that die?

This is code-golf so the program with the shortest bytecount wins!
GolfScript, 116 bytes

Since the scoring is in bytes, I figure that means we can use all bytes in the solution.  Going outside the printable ASCII set allows a somewhat shorter solution than Peter Taylor's, at the cost of making the code harder to display here.  Without the unprintable data, my code looks like this:

'57 BYTES OF BINARY DATA HERE'256base 26base 6/{;9.?rand}${6rand=65+.81='  u '2/=}%8/n*


It's pretty similar to Peter Taylor's solution, and I admit to shamelessly borrowing bits of it (such as the .81='  u '2/= trick), although I think I managed to shorten his shuffle slightly, even after spending an extra char byte for better randomness.

The binary string in the beginning of the script contains unprintable characters, and so cannot be directly pasted here.  Instead, I'll provide the script as a hex dump:

0000000: 2701 8302 7c56 97d5 ec9c 52e3 462e 44d7  '...|V....R.F.D.
0000010: a8d2 81c9 6115 fc80 4da4 6cd3 b06f a6d8  ....a...M.l..o..
0000020: 4e7e 2029 12a9 f331 0b83 3481 de36 81e2  N~ )...1..4..6..
0000030: 41b4 534d dee8 13f7 ccfd 2732 3536 6261  A.SM......'256ba
0000040: 7365 2032 3662 6173 6520 362f 7b3b 392e  se 26base 6/{;9.
0000050: 3f72 616e 647d 247b 3672 616e 643d 3635  ?rand}${6rand=65
0000060: 2b2e 3831 3d27 2020 7520 2732 2f3d 7d25  +.81='  u '2/=}%
0000070: 382f 6e2a                                8/n*


On Linux, or any system with the xxd utility installed, this hex dump can be turned back into a working 116-byte GolfScript program by passing it through xxd -r.

Edit: Replaced 999rand with 9.?rand for much better randomness.  The shuffle should now be about as close to perfect as the underlying RNG allows.