on the prng behind random.random()

Christian Gollwitzer auriocus at gmx.de
Tue Nov 20 03:47:38 EST 2018


Am 19.11.18 um 22:05 schrieb Robert Girault:
> Chris Angelico <rosuav at gmail.com> writes:
> 
>> On Tue, Nov 20, 2018 at 7:31 AM Robert Girault <r at dev.null> wrote:
>>> Nice.  So Python's random.random() does indeed use mt19937.  Since it's
>>> been broken for years, why isn't it replaced by something newer like
>>> ChaCha20?  Is it due to backward compatibility?  That would make sense.
>>
>> What exactly do you mean by "broken"?
> 
> I mean the fact that with 624 samples from the generator, you can
> determine the rest of the sequence completely.

As far as I understand it, this is true only if you see the full 32bit 
output number from the Mersenne Twister for those 624 outputs. If 
however you create a list:

[random.randrange(10) for i in range(624)]

I don't think you can predict what follows.

	Christian



More information about the Python-list mailing list