La implementación habitual sería simplemente lanzar cada dado por separado (es decir, llamar al generador de números aleatorios dos veces). No hay ninguna diferencia matemática, y no quieres comprometerte a desarrollar una nueva matriz de espacio de muestras para cada nuevo conjunto de dados que te interese: 3d6 (tres dados de 6 caras), 5d6, 2d8, 4d6-baja, etc., etc. Tenga en cuenta esta información sobre la especificación del lenguaje de lanzamiento de dados "Troll" (t-roll): http://www.diku.dk/~torbenm/Troll/
La parte más cara de la ingeniería de software es el tiempo del programador. La mejor estrategia es la que sea más rápida, más corta y más fácil de leer y entender para los futuros mantenedores.