How do I generate random numbers in a microcontroller efficiently? Are there any general guidelines or a particular fast method?
If you have access to an ADC, then you can read the least significant bit from it, and use it as a seed for a Pseudo Random Number Generator, like others have posted. Obviously you will need to read more than one bit from the ADC, so multiple reads are needed, which could take a while. But you only need to do this once, at startup for example, and then use faster PRNG to generate new random numbers.
Many embeded devices have built inn ADC, for example the ATMega family form Atmel.