Está en la página 1de 11

INSTITUTO TECNOLÓGICO DE

CIUDAD MADERO

Presentación

1
Índice

Presentación ................................................................................................ 1

Índice ............................................................................................................ 2

1.- Marco Teórico ........................................................................................ 3

2. Análisis de la Solución ............................................................................ 5

3.- Diseño de la Solución ............................................................................ 6

4.- Resultados............................................................................................... 8

5.- Fuentes de Información ........................................................................ 9

6.- Conclusiones ........................................................................................ 10

2
1.- Marco Teórico

GENERADORES DE

Números Pseudoaleatorios

Se trata de una estructura G = (X, x0, T, U, g), donde:


X: Conjunto finito de estados.

x0 ∈ X: Estado inicial (semilla).

T: X → X: Función de transición.

U: Conjunto finito de posibles observaciones.

G: X → U: Función de salida.

Funcionamiento:
1. Se elige una semilla inicial cualquiera X0, y se genera una sucesión de
valores Xn mediante una relación de recurrencia Xn = T(Xn−1).

2. Cada uno de estos valores proporciona un número pseudoaleatorio


indefinido a través de alguna relación Un = g(Xn).

3. La sucesión de estados es periódica, puesto que X es finito.

4. En algún momento, ocurrirá que Xj = Xi para algún j > i, y a partir de ese


instante, Xj + k = Xi + k.

5. Por lo tanto, Uj + k = Ui + k, para todo k ≥ 0.

6. El periodo es el menor entero ρ > 0 tal que para algún entero T ≥ 0, se


verifica que xρ + k = Xk, para todo k ≥ T. El periodo de un generador no
puede exceder el cardinal del espacio de estados.
3
7. Una buena propiedad para un generador es que su periodo esté cercano
a |X|.

Características:
✓ La sucesión de valores que proporcione debería asemejarse a una
sucesión de realizaciones independientes de una variable aleatoria U(0, 1).

✓ Los resultados deben ser reproducibles, en el sentido de que comenzando


con las mismas condiciones iniciales debe ser capaz de reproducir la
misma sucesión.

✓ La propiedad anterior hace posible que se puedan depurar fallos del


modelo o simular diferentes alternativas del modelo en las mismas
condiciones, y que de este modo se obtenga una comparación más
precisa.

✓ Los procedimientos físicos no permiten que los resultados sean


reproducibles.

✓ La sucesión de valores generados debe tener un ciclo que no sea


repetitivo ni demasiado largo.

✓ Debe ser rápido y ocupar poca memoria interna.

4
2. Análisis de la Solución
Problema:

A un sistema de producción de la empresa EHYPSA llegan piezas de tipo 1 cada


5 ± 3 minutos, y piezas tipo 2 cada 3 ± 2 minutos. Las piezas tipo 1 pasan por
limpieza en un tiempo de 8 ± 3 minutos; al salir, 25% deben limpiarse de nuevo, y
el 75% restante sale del sistema para su venta. Las piezas tipo 2 pasan primero
por verificación en un tiempo de 9 ± 3 minutos, y después por limpieza en un
tiempo de 3 ± 1 minutos. Al salir de limpieza, 5% deben limpiarse de nuevo, y el
95% restante sale del sistema para su venta. Simule el sistema 1 mes y determine
el número mínimo de operarios de verificación y limpieza que permitan maximizar
la producción por hora. Indique el número de piezas de cada tipo que se
produjeron durante el mes.

En esta práctica, tendremos que seleccionar un método congruencial e


implementarlo en un lenguaje de alto nivel y obtener el periodo completo. En
este caso m= 2**17.

5
3.- Diseño de la Solución
MÉTODO CONGRUENCIAL LINEAL
package com.company;

import java.io.IOException;
import java.io.OutputStream;
import java.sql.SQLException;
import java.util.ArrayList;

public class Main {

public static void main(String[] args) {

int seed = 128;

int m = 131072;

int a = 33;

int c = 5;

ArrayList<Float> randomNums = new ArrayList<Float>();

GFG.lcm(seed, m, a, c, randomNums);

System.out.println("Cantidad de Numeros: " + (randomNums.size()-1) +


"\n");

for (int i = 1; i < (randomNums.size()); i++) {


6
System.out.print(randomNums.get(i) + ", ");
}

System.out.println("Cantidad de Numeros: " + (randomNums.size()-1) +


"\n");

}
}

public class GFG {

static void lcm(float seed, int mod, int multiplier,


int inc, ArrayList<Float> randomNums) {

randomNums.add(seed);
int i = 1;

while (true) {

float marking;

marking = (((randomNums.get(i - 1) * multiplier) + inc) % mod);


randomNums.add(marking);

i++;

if (randomNums.get(i - 1) == seed) {
break;
}

}
}
}

7
4.- Resultados
MÉTODO CONGRUENCIAL LINEAL

SEED A C M

1024 45 21 2^17

512 45 5 2^17

512 33 5 2^17

2048 45 53 2^17

1024 33 53 2^17

1024 25 61 2^17

1024 25 51 2^17

1024 25 45 2^17

1024 33 45 2^17

2048 5 45 2^17

2048 29 41 2^17

512 29 41 2^17

256 9 71 2^17

256 25 51 2^17

128 33 5 2^17

8
5.- Fuentes de Información

(s.f.). Obtenido de
https://webs.um.es/mpulido/miwiki/lib/exe/fetch.php?media=wiki:simt1b.pdf

9
6.- Conclusiones
¿La práctica requirió conocimientos previos? Si, esta vez había que emplear un
modelo de números aleatorios en un lenguaje de programación de alto nivel, y
conocimientos previos de probabilidad y estadística ¿Fue suficiente para realizar
la práctica los conocimientos aportados por su maestro? Sí, nos dio a conocer
que existen muchos tipos de modelos y practicamos con algunos ¿Cómo
llevaron a cabo la práctica? Nos apoyamos con una pizarra digital para que
cada uno pudiera plasmar sus observaciones para poder llegar a una conclusión
y usar un entorno de desarrollo para programar en java ¿Fue enriquecedor el
trabajo en equipo? Todos tuvimos oportunidad de participar sin criticar las
opiniones de los demás.
Francisco del Ángel Juarez

Tras la elaboración de esta práctica hemos podido usar los conceptos de los
números pseudoaleatorios y características de su comportamiento, tales como
las series de periodo completo y, de esta forma, aplicarlos al realizar un
generador de números pseudoaleatorios siguiendo un método congruencial e
implementarlo en un lenguaje de alto nivel. De esta forma, tendremos una forma
eficiente y confiable de obtener los números necesarios para nuestro proyecto
principal.
Mauricio Bernabé Fortuna López

Para esta práctica se requirió el conocimiento sobre los generadores de números


pseudoaleatorios, así como el conocimiento del método congruencial, todos
estos conocimientos fueron adquiridos gracias a las practicas que mostraba la
maestra en clases. La práctica se llevó a cabo mediante la formulación de
hipótesis y probando con diferentes cálculos. El trabajo en equipo va bien como
en todas las demás prácticas y cada miembro tiene sus aportaciones
importantes para la práctica.
Benitez Ferral Kaciel Alejandro

10
Para el desarrollo de esta práctica se requirieron conocimientos previos de
programación, ya que en esta ocasión elaboramos un código y lo aplicamos en
la realización de un generador de números pseudoaleatorios. El problema y su
solución fue comprendido también gracias a los conocimientos que nos ha
aportado la maestra en clases, los diferentes tipos de modelos y las practicas
elaboradas en clases.

El trabajo en equipo fue bueno, no hubo problemas y todos los miembros


aportamos ideas y fuimos realizando la práctica entre todos.
Johana Berenice Corona Gómez

Durante la practica nos percatamos de que una sucesión de números es


aleatoria si nadie que utilice recursos computacionales razonables puede
distinguir entre la serie y una sucesión de números verdaderamente aleatoria de
una forma mejor que tirando una moneda al azar para decidir cuál es cuál.
Además, mientras estabamos desarrollando el problema se utilizaron distintos
métodos para su empleo dentro de Excel.

En cuanto al comportamiento entre el equipo no hubo discusiones, además de


que se lograron resolver varios inconvenientes que hubo durante el desarrollo.
Marely Soledad García del Ángel

11

También podría gustarte