Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #4198

Re: how to do random / SystemRandom switch

Path csiph.com!x330-a1.tempe.blueboxinc.net!aioe.org!feeder.news-service.com!feeder.erje.net!weretis.net!feeder1.news.weretis.net!news.solani.org!.POSTED!not-for-mail
From Peter Otten <__peter__@web.de>
Newsgroups comp.lang.python
Subject Re: how to do random / SystemRandom switch
Followup-To comp.lang.python
Date Sat, 30 Apr 2011 15:06:34 +0200
Organization None
Lines 35
Message-ID <iph1gl$5jh$1@solani.org> (permalink)
References <ipgjm6$kdv$1@speranza.aioe.org>
Mime-Version 1.0
Content-Type text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding 7Bit
X-Trace solani.org 1304168789 5745 eJwNyskBwDAIA7CVaoI5xqEU9h8h1Vs8BmtXoymXi+PZHVPY8VJMMUpC1ZYA7RP8aWXyeVOdFxsNEKg= (30 Apr 2011 13:06:29 GMT)
X-Complaints-To abuse@news.solani.org
NNTP-Posting-Date Sat, 30 Apr 2011 13:06:29 +0000 (UTC)
X-User-ID eJwNyMkRAzEMA7CWrIt0ytFQVv8lbPBEBQxiopC1taIxOfx39HrdGvXT6KIDB3atf7N1FPR0YubF6TVHuOZ9R+QVWg==
Cancel-Lock sha1:5yVU+ZG8QUg9+aFYuMYVrGX/zAM=
X-NNTP-Posting-Host eJwNyrEBACEIBLCV4OUOHQcE9h/h7VIEi8rrRtAwmE9s8ny2Kb4AyYtCRPJRQjVaqHq2Oc5IV1KjLoKyRjY609DdLA++iB+qmxl1
Xref x330-a1.tempe.blueboxinc.net comp.lang.python:4198

Followups directed to: comp.lang.python

Show key headers only | View raw


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
...

Back to comp.lang.python | Previous | NextNext in thread | Find similar | Unroll thread


Thread

Re: how to do random / SystemRandom switch Peter Otten <__peter__@web.de> - 2011-04-30 15:06 +0200
  Re: how to do random / SystemRandom switch Matthias Kievernagel <mkiever@Pirx.sirius.org> - 2011-04-30 13:28 +0000

csiph-web