Ejemplo n.º 1
0
    def normal(self, seed, vals):

        if Aleatorio.rX2 and seed == Aleatorio.seed:

            Aleatorio.rX2 = False
            return Aleatorio.nX2

        Aleatorio.seed = seed

        i = random.randint(0, 1)
        m = vals[0]
        d = vals[1]

        while (True):
            v1 = 2 * rg.rand(seed) - 1

            v2 = 2 * rg.rand(seed) - 1

            w = v1**2 + v2**2
            if w < 1:
                break

        aux = math.sqrt(((-2 * (math.log(w))) / w))
        y1 = v1 * aux
        y2 = v2 * aux
        Aleatorio.nX1 = m + y1 * d
        Aleatorio.nX2 = m + y2 * d

        Aleatorio.rX2 = True
        #print('Aleatório rX1: ', Aleatorio.nX1)
        return Aleatorio.nX1
Ejemplo n.º 2
0
    def normal(self, dist):
        if self.has_next_normal:
            self.has_next_normal = False
            return self.next_normal

        v1 = 1
        v2 = 2
        while (v1**2 + v2**2 > 1):
            #print 'start'
            v1 = 2 * rand_generator.rand(self.stream) - 1
            v2 = 2 * rand_generator.rand(self.stream) - 1
            # print(self.stream)
            # print(v1)
            # print(v2)

        w = math.pow(v1, 2) + math.pow(v2, 2)

        y1 = v1 * math.sqrt(-2 * math.log(w) / w)
        y2 = v2 * math.sqrt(-2 * math.log(w) / w)

        x1 = dist[0] + y1 * dist[1]
        x2 = dist[0] + y2 * dist[1]

        self.next_normal = x2
        self.has_next_normal = True
        return x1
Ejemplo n.º 3
0
def normal(m, d, stream):
    v1 = 2 * rand_generator.rand(stream) - 1
    v2 = 2 * rand_generator.rand(stream) - 1

    w = pow(v1, 2) + pow(v2, 2)

    if w > 1 or w == 0:
        return normal(m, d, stream)

    y1 = v1 * math.sqrt((-2 * math.log(w)) / w)
    y2 = v2 * math.sqrt((-2 * math.log(w)) / w)

    return (m + y1 * d, m + y2 * d)
Ejemplo n.º 4
0
 def exponencial(self, seed, media):
     # """Gera um número segundo uma distribui��o exponencial negativa de m�dia m"""
     rnd = rg.rand(seed)
     return (-media * math.log(rnd))
Ejemplo n.º 5
0
def exponencial(media, stream):
    """Gera um número segundo uma distribuição exponencial negativa de média m"""
    #return (-media*math.log(random.random()))
    return (-media * math.log(rand_generator.rand(stream)))
Ejemplo n.º 6
0
 def exponencial(self, media):
     # """Gera um n�mero segundo uma distribui��o exponencial negativa de m�dia m
     return (-media * math.log(rand_generator.rand(self.stream)))