I am aware of one; the ZX Spectrum apparently used a Lehmer RNG with modulus 65537, and multiplier 75. This only generates numbers greater than zero. However, I'd like to use something with a period of more than 2^16 - 1.
I'm using this in a language with a 32-bit word length for integers (Haxe), so ideally it would be smaller than 2^31. However, I'm not necessarily looking for a Haxe-specific answer.
In machines that use twos complement (which means the x86 and derivatives, and pretty much any other computer you're likely to encounter), the high bit is used to indicate sign. If the high bit is set, then the number is negative.
So you can ensure that a number is positive by clearing the high bit. In the case of a 32-bit number, it's a simple matter of:
result = result & 0x7FFFFFFF;