how to do random / SystemRandom switch
Matthias Kievernagel
mkiever at Pirx.sirius.org
Sat Apr 30 09:28:36 EDT 2011
Peter Otten <__peter__ at web.de> wrote:
> Matthias Kievernagel wrote:
>
>> In my top-level script I want to select if my program
>> is to use random.xxx functions or the random.SystemRandom.xxx
>> ones. All the other modules shouldn't know about that
>> switch and simply use
>> import random
>> ...
>> return random.randint(1, 6)
>> ...
>> for example.
>
> You can inject the SystemRandom instance into the sys.modules cache:
>
>>>> import random
>>>> random
> <module 'random' from '/usr/lib/python2.6/random.pyc'>
>>>> sr = random.SystemRandom()
>>>> import sys
>>>> sys.modules["random"] = sr
>
> Then use it in the other modules:
>
>>>> import random
>>>> random
> <random.SystemRandom object at 0x1acdb60>
>
> Another approach is to monkey-patch the random module:
>
> import random
> sr = random.SystemRandom()
> random.randrange = sr.randrange
> random.randint = sr.randint
> ...
>
Thanks a lot. That's what I was looking for.
I'll give both a try.
Regards,
Matthias Kievernagel
More information about the Python-list
mailing list