Пример #1
0
def _random_shoot_bspline_(fun):
    """Get random number from bspline-like distribuitions
    >>> func = ...
    >>> print func.shoot()  
    """
    xmn = fun.xmin()
    xmx = fun.xmax()
    ymx = max(fun.bspline().pars())
    i = 0
    while True:
        x = _uniform_(xmn, xmx)
        y = _uniform_(0, ymx)
        v = fun(x)
        if v >= y: return x
Пример #2
0
def _random_generate_bspline_(fun, num):
    """Generate random numbers from bspline-like distribuitions
    >>> func = ...
    >>> for x in func.generate( 1000 ) : print x 
    """
    xmn = fun.xmin()
    xmx = fun.xmax()
    ymx = max(fun.bspline().pars())
    i = 0
    while i < num:
        x = _uniform_(xmn, xmx)
        y = _uniform_(0, ymx)
        v = fun(x)
        if v >= y:
            i += 1
            yield x
Пример #3
0
def _random_shoot_bernstein2D_(fun):
    """Get random number from 2D bernstein-like distribuitions
    >>> func = ...
    >>> print func.shoot()  
    """
    xmn = fun.xmin()
    xmx = fun.xmax()
    ymn = fun.ymin()
    ymx = fun.ymax()

    vmx = max(fun.bernstein().pars())
    while True:
        x = _uniform_(xmn, xmx)
        y = _uniform_(ymn, ymx)
        if fun(x, y) >= _uniform_(0, vmx):
            return x, y
Пример #4
0
def _random_generate_bernstein2D_(fun, num=1):
    """Generate random numbers from 2D bernstein-like distribuitions
    >>> func = ...
    >>> for x,y in func.generate( 1000 ) : print x,y 
    """
    xmn = fun.xmin()
    xmx = fun.xmax()
    ymn = fun.ymin()
    ymx = fun.ymax()
    vmx = max(fun.bernstein().pars())
    i = 0
    while i < num:
        x = _uniform_(xmn, xmx)
        y = _uniform_(ymn, ymx)
        if fun(x, y) >= _uniform_(0, vmx):
            i += 1
            yield x, y
Пример #5
0
def generate ( fun , num ) :
    """Generate random numbers from bernstein-like distribuitions
    >>> func = ...
    >>> for x in func.generate( 1000 ) : print x 
    """
    b   = fun.bernstein() 
    xmn = b.xmin ()
    xmx = b.xmax ()
    ymx = max ( b.pars() )
    i   = 0 
    from random import uniform as _uniform_
    while i < num : 
        x = _uniform_ ( xmn , xmx ) 
        y = _uniform_ (   0 , ymx )
        v = fun ( x )
        if v >= y :
            i+= 1 
            yield x
Пример #6
0
def generate2( fun , num ) :
    """Generate random numbers from bernstein-like distribuitions
    >>> func = ...
    >>> for x,y in func.generate( 1000 ) : print x,y 
    """
    b   = fun.bernstein() 
    xmn = b.xmin ()
    xmx = b.xmax ()
    ymn = b.ymin ()
    ymx = b.ymax ()
    vmx = max ( b.pars() )
    i   = 0 
    from random import uniform as _uniform_
    while i < num : 
        x = _uniform_ ( xmn , xmx ) 
        y = _uniform_ ( ymn , ymx ) 
        v = _uniform_ (   0 , vmx )
        f = fun ( x , y )
        if f >= v :
            i+= 1 
            yield x,y