A number of different RNGs, and different distributions, have been implemented as a Python module containing so-called extension types coded in C.
The crng module can be obtained at this location.
Python interactive usage:
% python
>>> import crng
>>> r = crng.ParkMiller(seed=123)
>>> print r()
0.000962643418909
>>> print r(2)
(0.179147941609, 0.939454629989)
To use a another distribution, create it with the help of a basic uniform (0,1) RNG:
>>> n=crng.NormalDeviate(rng=crng.Ranlux(), stdev=4.0)
>>> n(4)
(0.960612428619, 6.30989834512, -0.972826635646, -2.09557141754)
There are a few utility procedures for sampling and shuffling:
>>> r = crng.ParkMiller(seed=123)
>>> seq = "abcdefghijklmnopqrstuvwxyz"
>>> seq2 = crng.Shuffle(seq, r)
>>> print seq2
yzmvrohkifbgduncqsxptljwea