Escolar Documentos
Profissional Documentos
Cultura Documentos
37.4. Algoritmos Algoritmos para a gerao de nmeros aleatrios pertencentes a muitas distribuies diferentes so dados, por exemplo, por Press [13], Ahrens e Dieter [14], Rubinstein [15], Devroye [16], Walck [17] e Gentil [18]. Para muitas distribuies, existem algoritmos alternativos, variando em complexidade, preciso, velocidade e. Para o tempo de aplicaes crticas, esses algoritmos podem ser codificado em linha para remover a sobrecarga significativa frequentemente encontrados em fazer funo chamadas. Nos exemplos abaixo, usamos a notao para as variveis e parmetros apresentados na Tabela 35.1. Variveis chamadas de "u" so consideradas independentes e uniforme em [0,1). Denominadores deve ser verificado para ser diferente de zero quando relevante. 37.4.1. Decaimento exponencial: Esta uma aplicao comum do mtodo de transformao inversa, e utiliza o fato de que se u for distribuda uniformemente no intervalo [0, 1], em seguida, (1 - u) tambm. Considere um exponencial f(t) =1/tauexp(-t/tau) que est truncado, de modo a situar-se entre dois valores, a e b,e normalizada para a rea de unidade. Para gerar tempo de decaimento t de acordo com este pdf, primeiro vamos alfa=exp(-a/tau) e beta=(-b/tau) ento geramos u e temos t=(-tauln(beta+u(alfa-beta))). Para (a,b) = (0,infinito), teremos simplesmente t=-tau.ln(u) 37.4.2. Direo isotrpico em 3D: Isotropia, a densidade proporcional ao ngulo slido, o elemento diferencial de que d(omega)=d(cos teta) dfi. Da cos teta uniforme (2u1 - 1) e um uniforme (2 pi u2). Para gerao alternativa de um seno A e cos A, ver prxima subseo. 37.4.3. Seno e co-seno do ngulo aleatrio em 2D: Gerar U1 e U2. Ento v1 = 2u1 - 1 uniforme em (-1,1) e v2 = u2 uniforme em (0,1). Calcular r2 = v21 + v22. Se r2> 1, comear de novo. Caso contrrio, o seno (S) e cosseno (C) de um ngulo aleatrio (isto , uniformemente distribudo entre zero e 2 pi) so dadas por S = 2v1v2/r2 e C = (v21 - v22) r2 /. (37.5) 37.4.4. Distribuio de Gauss: Se u1 e u2 so uniformes em (0,1), ento z1 = sin (2 pi u1) Raiz (-2 ln u2) e z2 = cos (2 pi u1) Raiz (-2 ln u2) (37,6) so independentes e Gaussian distribudo com mdia 0 e sigma = 1. Existem muitas variantes deste algoritmo bsico, que pode ser mais rpido. Por exemplo, a construir v1 = 2u1 - 1 e v2 = 2u2 - 1, que so uniformes em (-1,1). Calcule r2 = v21 + v22, e se r2> 1 recomear. Se r2 <1, uniforme em (0,1). Ento, z1 = v1raiz (-2 ln r2 / r2) e z2 = v2raiz (-2 ln r2/r2) (37,7) so nmeros independentes escolhidos a partir de uma distribuio normal com mdia 0 e varincia 1. z'i = + sigmazi distribui com mdia e varincia sigma2. Para uma gaussiana multivariada com uma n n matriz de covarincia V, pode-se comear pela gerao de n variveis independentes gaussianos, { nablaj }, com mdia 0 e varincia 1 cpom feito acima.
Ento, o novo conjunto {xi} obtido como xi = mii + SOMAj (LijNABLAj), onde mii a mdia de xi, e Lij so os componentes de L, a matriz inferior triangular nico que satisfaz V = LLT. A matriz L pode ser facilmente calculada pela seguinte relao recursiva (mtodo de Cholesky): EQ. 37.8, 37.8b 37.9 e, portanto, as variveis correlacionadas gaussianos so gerados como x1 = 1 + sigma1nabla1, x2 = 2 + + rhosigma2nabla1 Raiz (1 - rho2) sigma2nabla2. 37.4.5. ETA2 distribuio (n): Para gerar uma varivel aps a distribuio ETA2 para n grau de liberdade, use a distribuio Gama com k = n / 2 e lambida = 1/2, utilizando o mtodo de Sec. 37.4.6. 37.4.6. Distribuio gama: Todos os algoritmos so dados os seguintes lambida = 1. Para lambida Diferente de 1, dividir o nmero x resultante aleatoriamente por lambida Se k = 1 (a distribuio exponencial), aceite -ln x = u. (Veja tambm Sec. 37.4.1.) Se 0 <k <1, inicializar com v1 = (e + k) / e (e = 2,71828 com ... sendo o log natural base). Gerar u1, u2. Definir v2 = v1u1. Caso 1: v2 1. Define x = v21 / k. Se u2 e-x, ceitar x a e parar, seno reiniciar gerando novo u1, u2. Caso 2: v2> 1. Define x = -ln ([v1 - v2] / k). Se u2 xk-1, aceitar x e parar, seno reiniciar gerando nova u1, u2. Note-se que, para k <1, a densidade de probabilidade tem um plo em x = 0, de modo que os valores de retorno de zero, devido a estouro deve ser aceito ou no tratada.