uint32_t lcg_parkmiller(uint32_t seed) { uint32_t hi = seed / Q; uint32_t lo = seed % Q; int32_t test = A * lo - R * hi; if (test <= 0) test += M; return test; } Liczba wyjściowa tej funkcji może być z powrotem wkładana jako wejście do generowania liczb pseudolosowych, tak długo jak wołający uważa, by nie zaczynać od zera. Jeśli iloczyn dwóch 32-bitowych liczb spowoduje nadmiar (poniższy przykład), niezbędna jest zmiana typu na uint64_t.

Inna popularna para generatorów Lehmera używa liczb pierwszych modulo 232-5: uint32_t lcg_rand(uint32_t a) { return ((uint64_t)a * 279470273UL) % 4294967291UL; }

Wiele innych generatorów Lehmera i liczb pierwszych ma dobre własności. Następujący 128-bitowy generator Lehmera wymaga 128-bitowego wspomagania przez kompilator i używa mnożnika obliczonego przez L’Ecuyera. Ma on cykl /* Stan musi być zainicjowany przez dwie 64-bitowe wartości, z których s MUSI być nieparzysta. */ static union { __int128 x; uint64_t s; } state;

uint64_t next(void) { state.x *= ((__int128)0x12e15e35b500f16e << 64 | 0x2e714eb2b37916a5); return state.s; }