There is a minor issue with calling rand directly in your dice procedure; each call generates a separate procedure. Doing so is more expensive than necessary. It also isn't clear how this affects the random sequence obtained. Here's an approach that uses an appliable module to ensure that rand is only called one time.
dice := module()
local ModuleApply, ModuleLoad, die;
ModuleLoad := proc()
die := rand(1..6);
ModuleApply := proc()
ModuleLoad(); # needed because this module isn't being loaded from a library
[5, 2], [5, 6], [2, 3], [4, 4]
Note that the ModuleLoad isn't needed here, rather die could be directly assigned rand(1..6) in the module body, however, if this were being written to a Maple archive (library) it would probably be better to delay the assignment to when the module is loaded, versus when it is assigned.