On 2013-04-11 17:35, Oscar Benjamin wrote:
On 11 April 2013 11:50, Steven D'Aprano
<steve+comp.lang.pyt...@pearwood.info> wrote:
On Thu, 11 Apr 2013 10:47:43 +0100, Oscar Benjamin wrote:

On 11 April 2013 08:47, Steven D'Aprano
<steve+comp.lang.pyt...@pearwood.info> wrote:

One thing to be aware of: urandom may run out of entropy, and then it
will slow down a lot. If you don't care about cryptographic randomness,
you could use this instead:

Reading this I'm realising that I don't really know what os.urandom is.
How exactly is it generating random numbers and what do you mean by it
running out of entropy?

Some (most?) modern operating systems provide a cryptographically strong
source of non-deterministic randomness. The non-deterministic part comes
from external "stuff", which is called "entropy". Typical sources of
entropy include network events, user key-presses, moving the mouse, and
(presumably in machines with special hardware), even thermal noise in
electrical components.

Entropy is used and discarded, so urandom needs the OS to continually
replenish the amount of entropy. Under normal circumstances, this it
does, but if you grab lots of urandom output on a system which is
otherwise quiet and not doing anything, it could run out.

Okay, so I understand what entropy is in the thermodynamic sense and
also in the mathematical (Shannon) sense but I'm still confused about
what it means that the OS is somehow storing entropy. Do you mean that
it is always maintaining a buffer of what it considers to be random
bytes that it slowly builds up from noise that is made accessible to
the OS from the hardware?

Yes.

--
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
 that is made terrible by our own mad attempt to interpret it as though it had
 an underlying truth."
  -- Umberto Eco

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to