09.05.2013 Views

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

484 Apéndice A. Aspectos complem<strong>en</strong>tarios<br />

Program DadoYMoneda (output);<br />

const<br />

N = 10; {núm. de lanzami<strong>en</strong>tos}<br />

var<br />

i, lanzami<strong>en</strong>tos, caras, cruces: integer;<br />

begin<br />

Randomize;<br />

for i:= 1 to N do {N lanzami<strong>en</strong>tos de dado}<br />

WriteLn(Random(6)+1);<br />

for i:= 1 to N do {N lanzami<strong>en</strong>tos de moneda}<br />

if Random < 0.5 th<strong>en</strong><br />

WriteLn(’Cara’)<br />

else<br />

WriteLn(’Cruz’)<br />

<strong>en</strong>d. {DadoYMoneda}<br />

Como puede imaginarse, la función Random se puede combinar con otras operaciones<br />

y funciones para lograr efectos más variados. Por ejemplo la expresión<br />

Random ∗ (b − a) + a<br />

produce el efecto de una variable aleatoria uniforme del intervalo [a, b). De modo<br />

similar, la expresión<br />

Random(b − a + 1) + a<br />

produce el efecto de una variable aleatoria uniforme del conjunto {a, . . . , b}.<br />

A.2.2 Simulación de variables aleatorias<br />

Aunque las variables aleatorias uniformes bastan <strong>en</strong> un gran número de situaciones,<br />

muchas veces se requiere g<strong>en</strong>erar otras variables sigui<strong>en</strong>do otras funciones<br />

de distribución. En este apartado se introduce el método de la transformada<br />

inversa, 4 que permite g<strong>en</strong>erar variables aleatorias arbitrarias. En los ejercicios<br />

se describ<strong>en</strong> sin justificar algunos métodos particulares.<br />

En primer lugar se pres<strong>en</strong>ta este método para variables aleatorias continuas.<br />

Si F : IR → [0, 1] es una función de distribución cualquiera, el método consiste<br />

<strong>en</strong> g<strong>en</strong>erar la variable aleatoria y ∼ Unif[0, 1), y hallar el x tal que F (x) = y<br />

(véase la figura A.4). En otras palabras, si y ∼ Unif[0, 1), <strong>en</strong>tonces F −1 (y) ∼ F .<br />

Por ejemplo, supongamos que deseamos g<strong>en</strong>erar una variable aleatoria uniforme<br />

<strong>en</strong> el intervalo [a, b). Como su función de distribución es,<br />

⎧<br />

⎪⎨ 0 si x ≤ a<br />

x−a<br />

F (x) =<br />

⎪⎩<br />

b−a si a ≤ x ≤ b<br />

1 si b < x<br />

4 También conocido como look up-table.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!