Robert Girault wrote: > Looking at its source code, it seems the PRNG behind random.random() is > Mersenne Twister, but I'm not sure. It also seems that random.random() > is using /dev/urandom. Can someone help me to read that source code? > > I'm talking about CPython, by the way. I'm reading > > https://github.com/python/cpython/blob/master/Lib/random.py > > The initial comment clearly says it's Mersenne Twister, but the only > random() function there seems to call _urandom(), which I suppose is an > interface to /dev/urandom. > > What am I missing here?
There's a class random.Random which is instantiated at the end of the file, and random() is bound to the corresponding method: _inst = Random() ... random = _inst.random The Random class inherits from _random.Random which is implemented in C and does most of the actual work. If you can read C: https://github.com/python/cpython/blob/master/Modules/_randommodule.c The most relevant part seems to be genrand_int32() which is wrapped by random_random() that actually implenents the _random.Random.random() method. -- https://mail.python.org/mailman/listinfo/python-list