# Randomness

*some random notes, quotes, & code*

Although randomness had often been viewed as an obstacle and a nuisance for many centuries, in the twentieth century computer scientists began to realize that the deliberate introduction of randomness into computations can be an effective tool for designing better algorithms.

Unlike classical information theory, algorithmic information theory gives formal, rigorous definitions of a random string and a random infinite sequence that do not depend on physical or philosophical intuitions about nondeterminism or likelihood.

Python uses the Mersenne Twister as the core generator. It produces 53-bit precision floats and has a period of 2**19937-1 [...] However, being completely deterministic, it is not suitable for all purposes, and is completely unsuitable for cryptographic purposes.

(Mersenne Twister replaced Wichmann-Hill as default generator in Python 2.3)

The random module also provides the SystemRandom class which uses the system function os.urandom() to generate random numbers from sources provided by the operating system.

example:

import random foo = random.getrandbits(1024) # mersenne twister, returns arbitrarily long integer print(bin(foo)) altrand = random.SystemRandom() # not available on all systems, assumes entropy source bar = altrand.getrandbits(1024) print(bin(bar))