Vous êtes sur la page 1sur 8

Tecnolgico Nacional de Mxico

Instituto Tecnolgico de Minatitln

Simulacin

Carranza Daz Wendy

Ingeniera en Sistemas Computacionales

Alumno:
Blanco Beltrn Daniela Guadalupe

Act. 3 - Practica 2:
Generacin de nmeros Pseudoaleatorios
INTRODUCCION

En el presente documento se mostrara el procedimiento que se llevo a cabo


para el debido desarrollo de un programa codificado en un lenguaje de
programacin de alto nivel (JAVA) el cual permite aplicar cierto algoritmo para la
generacin de nmeros Pseudoaleatorios.

Posteriormente se programaron 3 tipos de pruebas de aleatoriedad, las cuales


permiten evaluar si los nmeros Pseudoaleatorios anteriormente generados
cumplen con ciertas caractersticas.
ALGORTIMO CONGRUENCIAL MULTIPLICATIVO

METODOS

A continuacin se presenta el mtodo operacin en el cual se lleva a cabo el


clculo de las variables m y a mediante las variables ingresadas en el sistema
(semilla, k y g).

double ri;
int a, k, g, Xn;
double m;

// Se realiza la operacin para calcular las variables m y a

public void Operacion(){

Xn=Integer.parseInt(txtsemilla.getText());

k=Integer.parseInt(txtK.getText());
g=Integer.parseInt(txtg.getText());

m=Math.pow(2,g); Calculo de las variables m y a


a=g+(8*k);

txtm.setText(Integer.toString((int)m));
txta.setText(Integer.toString(a));

try {
System.out.println("Trabajando en fichero Datos_ACM");
fw=new FileWriter("Datos_ACM.txt",false);
pw=new PrintWriter(fw); Generacin del
fichero.
pw.println("Semilla: "+Xn);
pw.println("k: "+k);
pw.println("g: "+g);
pw.println("m: "+m);
pw.println("a: "+a);

fw.close();
} catch (IOException ex) {

Logger.getLogger(Algoritmo_congruencial_multiplicativo.class.getName()).log(Le
vel.SEVERE, null, ex);
}
}
El siguiente mtodo llamado rnd debido a que en este se lleva a cabo la
generacin de los nmeros Pseudoaleatorios.

int ope;
Object [] fila=new Object[4];
DecimalFormat decimales = new DecimalFormat("0.0000");
FileWriter fw;
PrintWriter pw;
int n=4000;
double nums[]=new double[n];

//Realiza el calculo para la obtencion de los num pseudoaleatorias

public void rnd(){


DefaultTableModel modelo = (DefaultTableModel) Tabla.getModel();

try{
System.out.println("Trabajando en fichero de Variables Pseudoaleatorias\n");
fw=new FileWriter("pseudoaleatorios.txt",false);
pw=new PrintWriter(fw);

for (int i = 0; i < n; i++) {

ope= (int) ((a*Xn)%m); Calculo de los nmeros


ri=ope/(m-1); pseudoaleatorios

nums[i]=ri;

fila[0]=(i+1); Impresin de los resultados en


fila[1]=Xn; la Tabla que se muestra en la
fila[2]=ope; interfaz
fila[3]=decimales.format(ri);

Impresin en el fichero de los n


pw.println(decimales.format(ri)); nmeros generados
Xn=ope;

modelo.addRow(fila);
}

fw.close();
}catch(Exception e){
System.out.println("Error al escribir los datos");
}
Tabla.setModel(modelo);
}
Pantalla principal

Para poder llevar a cabo los dos mtodos antes mencionados se debe hacer uso
del botn Generar el cual es el que permite que todas las funciones programadas
se lleven a cabo, es decir, la obtencin de las variables m y a, as como la
impresin de la tabla y la activacin del botn Generar Pruebas, el cual da paso a
una nueva ventana en donde se muestras las pruebas de medias, varianza y chi-
cuadrada.

Botn principal
Cabe mencionar que el programa cuenta con algunos otros mtodos que
permiten llevar a cabo las pruebas estadsticas, los datos resultantes de estos
mtodos son guardados en ficheros que posteriormente son utilizados en la
ventana de pruebas estadsticas y que permiten llevar a cabo las operaciones que
se llevan a cabo.

Los mtodos son los siguientes:

void varianza(){

double dif=0, pt=0, sum=0, med=0, Vr=0;

for (int i = 0; i < n; i++) {


sum+=nums[i];
}
med=sum/n;
System.out.println(decimales.format(med));

sum=0;
for (int i = 0; i < n; i++) { Es este mtodo se realiza el clculo de la
dif=nums[i]-med; varianza, haciendo uso de un ciclo for y
pt=Math.pow(dif,2); guardndolo posteriormente en el fichero.
sum+=pt;
}
Vr=sum/(n-1);
System.out.println(decimales.format(Vr));

try{
System.out.println("Trabajando en fichero de Varianza\n");
fw=new FileWriter("varianza.txt",false);
pw=new PrintWriter(fw);

pw.println(decimales.format(Vr));
fw.close();
}catch(Exception e){
System.out.println("Error al trabajar en el fichero Varianza");
}
}
En este mtodo llamado frecuencia se realiza el conteo de los nmeros
Pseudoaleatorios dentro de parmetros establecidos de 0.10, los valores
resultantes se guardan en otro fichero para su posterior uso en la prueba de chi-
cuadrada.

void frecuencia(){

int cont;
double aux1=0.00, aux2=0.10;
for (int i = 0; i < 10; i++) {
cont=0;
for (int j = 0; j < n; j++) {
if((nums[j]>aux1) && (nums[j]<aux2)){
cont++;
}
}
frec[i]=cont;
aux1+=0.10;
aux2+=0.10;
}
for (int i = 0; i < frec.length; i++) {
System.out.println(frec[i]);
}
archivofrec();
}

void archivofrec (){

try{
System.out.println("Trabajando en fichero de Frecuencia\n");
fw=new FileWriter("frecuencia.txt",false);
pw=new PrintWriter(fw);

for (int i = 0; i < frec.length; i++) {


pw.println(frec[i]);
}

fw.close();
}catch(Exception e){

}
}
CONCLUSIN

Mediante el desarrollo del programa se logro obtener una mejor


comprensin del comportamiento de las variables que se utilizan en la
metodologa que permite llevar a cabo la generacin de nmeros
Pseudoaleatorios, as como analizar y comprender el proceso de la generacin de
las pruebas de aleatoriedad, siendo estas las que permiten comprobar si los si los
nmeros generados anteriormente cumplen con las caractersticas de los nm.
Pseudoaleatorios.