Algoritmos para Geração de Variáveis Aleatórias Distribuições Teóricas de Probabilidade Simulação Discreta de Sistemas - Prof. Paulo Freitas - UFSC/CTC/INE 1 Geração de Variáveis Aleatórias Métodos e procedimentos computacionais para a geração de variáveis aleatórias com características específicas de alguma das diversas distribuições teóricas de probabilidades. A necessidade de tais variáveis: tempos entre chegadas; tempos de serviço; demandas por produtos, etc. Simulação Discreta de Sistemas - Prof. Paulo Freitas - UFSC/CTC/INE 2 Métodos de Geração Os métodos baseiam-se na prévia geração de um número aleatório R, uniformemente distribuído sobre o intervalo (0, 1). x expresso como uma função explícita de R.. Métodos básicos: Transformação Inversa; Transformação Direta; Convolução; Aceitação/Rejeição; Propriedades Especiais Simulação Discreta de Sistemas - Prof. Paulo Freitas - UFSC/CTC/INE 3 Distribuição Geométrica Uma variável com distribuição geométrica representa o número de falhas observadas em uma seqüência de provas do tipo Bernoulli, sua função densidade é: p(x) = p(1 - p)x , x = 1, 2, ... Pelo método da transformação inversa, obtém-se a seguinte relação: ln(1 R) ln(1 R) x ln(1 p) ln(1 p) Simulação Discreta de Sistemas - Prof. Paulo Freitas - UFSC/CTC/INE 4 Distribuição Geométrica Para a obtenção de uma variável com distribuição geométrica, necessitamos do parâmetro (probabilidade de um sucesso) p. Obtido tal elemento, os seguintes passos devem ser considerados: Gerar R; ln(1 R) Calcular x. = ln(1 p) A função . (arredondamento para o maior inteiro) atribui a x o maior inteiro que satisfaz a relação anterior. Simulação Discreta de Sistemas - Prof. Paulo Freitas - UFSC/CTC/INE 5 Exemplo Gerar três valores de uma distribuição geométrica com p = 1/2. Usando uma tabela de valores aleatórios, obtemos R1 = 0,932; R2 = 0,105 e R3 = 0,687. Primeiramente calculamos o valor da constante 1/ln (1-p) = 1/ln (1-0,5) = -1,443. Na seqüência, obtemos os valores dos xi’s a partir dos Ri’s . Simulação Discreta de Sistemas - Prof. Paulo Freitas - UFSC/CTC/INE 6 Exemplo Passo 1 2 1 2 1 2 Valor de Ri e de xi R1 = 0,932 x1 = -1,443 ln(1 - 0,932) 3,878 = 4 R2 = 0,105 x2 = -1,443 ln(1 - 0,105) = 1 R3 = 0,687 x3 = -1,443 ln(1 - 0,687) = 2 Simulação Discreta de Sistemas - Prof. Paulo Freitas - UFSC/CTC/INE 7 Distribuição de Poisson A distribuição de Poisson se caracteriza pela seguinte função densidade de probabilidade: x p( x ) P ( X x ) e x! x 0,1,2, ..., 0 a qual representa a probabilidade de ocorrência de x sucessos, num dado intervalo de tempo. Onde , é o valor esperado do número de ocorrências por unidade de tempo. Simulação Discreta de Sistemas - Prof. Paulo Freitas - UFSC/CTC/INE 8 Distribuição de Poisson Geração de uma variável aleatória Poisson, considerando o método da Aceitação/Rejeição: Fazer n = 0, e P =1; Gerar um número aleatório Rn+1 e substituir P por P.Rn+1; Se, P e, aceitar X = n, caso contrário, rejeitar n atual, fazer n = n +1, e retornar aos procedimentos no passo 2. A idéia básica por traz do método da Aceitação/Rejeição, é gerar um número aleatório e testar uma determinada condição de “aceitação”. Caso esta condição seja satisfeita, o valor gerado é aceito, caso contrário os passos são repetidos. Simulação Discreta de Sistemas - Prof. Paulo Freitas - UFSC/CTC/INE 9 Exemplo Gerar três números, segundo uma distribuição de Poisson, com = 0,2. Primeiramente, computamos o valor de e e0,2 0,8187 . Na seqüência, obtemos um conjunto de números aleatórios e iniciamos os procedimentos estabelecidos nos passos de 1 a 3 anteriormente firmados Simulação Discreta de Sistemas - Prof. Paulo Freitas - UFSC/CTC/INE 10 Exemplo Passo 1 2 3 1-3 1 2 3 2 3 2 3 Geração de P, n e X n = 0, P = 1 R1 = 0,4357; P = 1.R1 = 0,4357 como P = 0,4357 < e-0,2 < 0,8187; aceitamos X = 0 R1 = 0,4146 nos leva a X = 0 n = 0, P = 1 R1 = 0,8353; P = 1.R1 = 0,8353 como P e ; rejeitamos n = 0 e retornamos ao passo 2 com n = 1 R2 = 0,9952; P = P.R2 = 0,8353.0,9952 = 0,8313 P e como ; rejeitamos n = 1 e retornamos ao passo 2 com n = 2 R3 = 0,8004; P = P.R3 = 0,8313. 0,8004 = 0,6654 como P = 0,6654< e-0,2 < 0,8187; aceitamos X = 2 Simulação Discreta de Sistemas - Prof. Paulo Freitas - UFSC/CTC/INE 11 Distribuição Empírica Discreta Para gerar uma variável aleatória que tenha um comportamento semelhante ao determinado por distribuição empírica discreta conhecida, é necessário, inicialmente, determinarmos as freqüências relativas acumuladas da distribuição. Por exemplo: x 0 1 2 p(x) 0,50 0,30 0,20 F(x) 0,50 0,80 1,00 Uma vez que tais informações estejam disponíveis, aplicamos o método da transformação inversa que, neste caso, torna-se um processo de pesquisa em uma tabela de valores, num procedimento muito semelhante ao que realizamos no capítulo 1, quando tratamos do método de Monte Carlo. Simulação Discreta de Sistemas - Prof. Paulo Freitas - UFSC/CTC/INE 12 Procedimentos Os procedimentos de busca são facilitados pela construção de uma tabela para a geração dos valores de x: i 1 2 3 Entrada ri 0,50 0,80 1,00 Saída xi 0 1 2 Esquematizando os procedimentos: 1. 2. 3 Gerar R; Descobrir i, tal que ri-1 < R ri; Fazer X = xi. Simulação Discreta de Sistemas - Prof. Paulo Freitas - UFSC/CTC/INE 13 Exemplo Suponha uma variável aleatória com a seguinte distribuição de probabilidades: x 2 3 5 p(x) 0,45 0,35 0,20 F(x) 0,45 0,80 1,00 Dados R1= 0,43; R2=0,61 e R3=0,83; gerar três valores para a variável X, que pertençam a esta distribuição. R1= 0,43 < F(x=2) = 0,45; logo X=2; F(x=2) = 0,45 < R2= 0,61 F(x=3) = 0,80 ; logo X=3; F(x=3) = 0,80 < R = 0,83 F(x=5) = 1,00 ; logo X=5; 3 Simulação Discreta de Sistemas - Prof. Paulo Freitas - UFSC/CTC/INE 14 Distribuição Uniforme Uma variável aleatória x tem distribuição uniforme sobre um intervalo [a, b], se sua função densidade de probabilidade (fdp) é dada por: 1 f ( x) ba a xb A técnica mais utilizada para a obtenção de uma variável aleatória uniformemente distribuída é a da transformação inversa. A fórmula é a seguinte: x a (b a ) R Os parâmetros necessários para a obtenção de uma variável com distribuição uniforme são apenas os valores extremos do intervalo [a, b]. Uma vez definidos, os seguintes passos devem ser considerados: Gerar R; Calcular x a (b a ) R Simulação Discreta de Sistemas - Prof. Paulo Freitas - UFSC/CTC/INE 15 Exemplo Gerar três valores de uma distribuição uniforme no intervalo [10, 50]. Usando os seguintes valores aleatórios R1 = 0,932; R2 = 0,105 e R3 = 0,687. Aplicando o método proposto teremos: Passo 1 2 1 2 1 2 Valor de Ri e de xi R1 = 0,932 x1 = 10 + (40)0,932 = 47,28 R2 = 0,105 x2 =10 + (40)0,105= 14,2 R3 = 0,687 x3 = 10 + (40)0,687= 37,48 Simulação Discreta de Sistemas - Prof. Paulo Freitas - UFSC/CTC/INE 16 Distribuição Triangular Uma variável aleatória x tem uma distribuição triangular se sua fdp é dada por: 2( x a ) (b a )(c a ) , f ( x ) 2( c x ) , (c b)(c a ) axb bxc onde a b c . A moda b = 3 E (x) - (a + c). Pelo método da transformação inversa obtém-se a fórmula para gerar amostras com distribuição triangular. A variável x com esta distribuição é obtida por: ba se 0 R a R(b a )(c a ) , ca x ba c (1 R)(c b)(c a ) , se R 1 ca Simulação Discreta de Sistemas - Prof. Paulo Freitas - UFSC/CTC/INE 17 Exemplo Gerar três valores de uma distribuição triangular com parâmetros (0, 1, 2). Obtidos R1 = 0,544; R2 = 0,747 e R3 = 0,449. 2R x 2 2(1 R) Passo 1 2 1 2 1 2 0 R 1 2 1 R 1 2 Valor de Ri e de xi R1 = 0,544 2 (1 0,544 ) x1 = 2= 1,045 R2 = 0,747 2 (1 0,747 ) x2 =2= 1,288 R3 = 0,449 2 ( 0,449) x3 = = 0,947 Simulação Discreta de Sistemas - Prof. Paulo Freitas - UFSC/CTC/INE 18 Distribuição Exponencial Uma variável aleatória x tem uma distribuição exponencial se sua fdp é dada por: f ( x) e x , x 0 O parâmetro é interpretado como sendo o número médio de ocorrências por unidade de tempo, enquanto a razão representa o tempo médio entre as ocorrências. Aplicando-se o método da transformação inversa para a obtenção de uma variável aleatória x com distribuição exponencial resulta na seguinte relação: ln(1 Ri ) xi Uma vez que (1-Ri), da mesma forma que Ri, possui distribuição uniforme no intervalo [0, 1], podemos substituir (1-Ri) por Ri na expressão acima. Simulação Discreta de Sistemas - Prof. Paulo Freitas - UFSC/CTC/INE 19 Exemplo Gerar valores de uma distribuição exponencial com parâmetro =1. i Ri xi 1 0,1306 2 0,0422 3 0,6597 4 0,7965 5 0,7696 2,0356 3,1653 0,4159 0,2275 0,2618 Simulação Discreta de Sistemas - Prof. Paulo Freitas - UFSC/CTC/INE 20 Distribuição Normal Uma variável aleatória x tem uma distribuição normal se sua fdp é dada por: ( x ) 1 2 f ( x) 2 e 2 2 , x Método de Box-Muller Z1=B cos Z2=B sen Z1 2 ln R1 cos(2R2 ) Z2 2 ln R1 sen(2R2 ) Simulação Discreta de Sistemas - Prof. Paulo Freitas - UFSC/CTC/INE 21 Exemplo Considerando as equações anteriores, gerar dois valores com distribuição normal padronizada a partir de R1 = 0,1758 e R2 = 0,1489. Z1 = [-2 ln (0,1758)]½ cos ( 0,1489) = 1,11 Z2 = [-2 ln (0,1758)]½ sen ( 0,1489) = 1,50 Para a obtenção de uma variável aleatória normal com média e desvio padrão , deve-se aplicar a transformação xi = + .Zi aos valores da normal padronizada. Por exemplo, para transformar os valores obtidos de Z1 e Z2 em uma Normal (10; 2), calcula-se: x1 = 10 + 2.(1,11) = 12,22 x2 = 10 + 2.(1,50) = 13,00 Simulação Discreta de Sistemas - Prof. Paulo Freitas - UFSC/CTC/INE 22