MINI MINI MANI MO
3
  \2k                 @   s  d Z ddlmZ ddlmZmZ ddl	m
ZmZ
mZmZmZ ddl	mZmZmZmZ ddlmZ ddlm Z!m"Z# ddl$m%Z& dd	l'Z(dd	l)Z*d
ddd
ddddddddddddddddddd d!gZ+d"e
d2 ed$ Z,d$e Z-ed%Z.d&ed' Z/d(Z0d)e0  Z1dd	l2Z2G d*d
 d
e2j3Z3G d+d! d!e3Z4d,d- Z5d3d/d0Z6e3 Z7e7j8Z8e7j9Z9e7j:Z:e7j;Z;e7j<Z<e7j=Z=e7j>Z>e7j?Z?e7j@Z@e7jAZAe7jBZBe7jCZCe7jDZDe7jEZEe7jFZFe7jGZGe7jHZHe7jIZIe7jJZJe7jKZKe7jLZLe7jMZMeNd1kre6  d	S )4a  Random variable generators.
    integers
    --------
           uniform within range
    sequences
    ---------
           pick random element
           pick random sample
           pick weighted random sample
           generate random permutation
    distributions on the real line:
    ------------------------------
           uniform
           triangular
           normal (Gaussian)
           lognormal
           negative exponential
           gamma
           beta
           pareto
           Weibull
    distributions on the circle (angles 0 to 2pi)
    ---------------------------------------------
           circular uniform
           von Mises
General notes on the underlying Mersenne Twister core generator:
* The period is 2**19937-1.
* It is one of the most extensively tested generators in existence.
* The random() method is implemented in C, executes in a single Python step,
  and is, therefore, threadsafe.
    )warn)
MethodTypeBuiltinMethodType)logexppieceil)sqrtacoscossin)urandom)SetSequence)sha512NRandomseedrandomuniformrandintchoicesample	randrangeshuffle
normalvariatelognormvariateexpovariatevonmisesvariategammavariate
triangulargaussbetavariate
paretovariateweibullvariategetstatesetstategetrandbitschoicesSystemRandom   g      ?g       @g      @g      ?g      @5      c                   s  e Zd ZdZdZd;ddZd<