Tout d'abord, votre code n'est pas compilable en l'état ; ce n'est pas un ECM.
Ensuite, la ligne `\FPtrunc{\entier}{\alea}{0}` donne à la macro `\entier` un texte de remplacement constitué d'un nombre *entier* de 1 à 6. Ainsi, la macro `\entier` peut être affichée telle quelle.
La primitive `\number` convertit l'entier interne qui la suit en un nombre entier fait de caractères affichable (base 10 et chiffres arabes). Par exemple
\number`P % affiche 80
car `P est l'entier 80 (le charcode de la lettre P) dans les cas où TeX attend de lire un nombre entier.
Enfin, la primitive de eTeX `\numexpr` convertit une enchainement d'opérations arithmétiques en un entier interne, c'est pourquoi elle doit être précédée de `\number` si on veut afficher le résultat ou le stocker dans une macro avec `\edef`. Par exemple,
\number\numexpr3*(1+2*4)-5 % affiche 22
Dans votre code, `\numexpr` est inutile car il n'y a aucune opération à effectuer.
Le code de votre macro `\nbalea` aurait pu être
\def\nbalea{\FPeval{\valeurde}{trunc(random*6+1,0)}}
Dernier truc : vous avez un espace parasite dans votre macro : `}` doit être immédiatement suivie de `%` sans quoi l'espace entre les deux est pris en compte.