You can get an Arduino shield which integrates a small LCD display and a few pushbuttons. You can get rotary switches which can be configured to support however many positions you want, and use this to select the number of sides you want on the dice. If you want to support multiple dice you could use a second one to select the number.
The Arduino runtime provides a random() function which can be used to produce a sequence of random numbers. However, this would need to be seeded with a random value at power up. I think that people often use a floating input pin as a noise source to generate a random seed - I don't know how reliable that it. An alternative approach would be to save a random seed in EEPROM, and update it with a new seed each time the device was powered up.