0% encontró este documento útil (0 votos)
126 vistas4 páginas

Generador de Números Aleatorios Mixto

Este documento presenta un programa Java que genera números aleatorios mixtos utilizando la técnica del congruente lineal. El programa permite al usuario introducir valores para los parámetros x0, a, c y m, y luego itera la función f(x) = (a*x + c) % m hasta que se alcanza el periodo o se iguala a la semilla original. Los resultados se escriben en un archivo de texto.

Cargado por

ByronPérez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
126 vistas4 páginas

Generador de Números Aleatorios Mixto

Este documento presenta un programa Java que genera números aleatorios mixtos utilizando la técnica del congruente lineal. El programa permite al usuario introducir valores para los parámetros x0, a, c y m, y luego itera la función f(x) = (a*x + c) % m hasta que se alcanza el periodo o se iguala a la semilla original. Los resultados se escriben en un archivo de texto.

Cargado por

ByronPérez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

package generadordenumerosaleatoriosmixto;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.LinkedList;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;
//import java.util.logging.Level;
//import java.util.logging.Logger;
import javax.swing.JOptionPane;
/**
*
* @author x
*/
public class GenMixto {
/**
* @param args the command line arguments
*/
static void metodoMixto(int x, int a, int c, int mod, PrintWriter pw)
{
int n = 0;
int semilla = 0;
int xn1;
LinkedList<Integer> xxn1 = new LinkedList();
LinkedList<Integer> xx = new LinkedList();
LinkedList<Integer> nn = new LinkedList();
while(semilla != x)
{
if(n == 0)
{
semilla = x;
}
nn.add(n);
xx.add(x);
//System.out.print(n + "\t" + x + "\t");
xn1 = (a * x + c) % mod;
//System.out.print(xn1 + "\n");
x = xn1;
n = n + 1;
//System.out.println(n + "\t" + x + "\t" + xn1);
xxn1.add(xn1);
}

if(n == mod && x == semilla)


{
for (int i = 0; i < mod; i++) {
System.out.println(nn.get(i) + "\t" + xx.get(i) + "\t" + xxn1.get(i));
}
System.out.println("El periodo es completo: "+ n);
pw.print("x0 = " + x + ", a = " + a + ", c = " + c + ", mod = " + mod);
pw.println();
}
else
{
//System.out.println("El periodo es incompleto: "+ n);
}
//System.out.println("Semilla: "+ semilla);
}
public static void main(String[] args) throws IOException {
Scanner scan = new Scanner(System.in);
System.out.println("Introduce el valor de b: ");
int b = scan.nextInt();
while(b<5 && b>63)
{
System.out.println("Introduce de nuevo el valor de b: debe ser entre 5 y 63: ");
b = scan.nextInt();
}
int m = (int)Math.pow(2, b);
System.out.println("Introduce el valor de la semilla(x0): ");
int x = scan.nextInt();
while(x>m)
{
System.out.println("Introduce el valor de la semilla(x0) de nuevo, debe ser menor que
"+m+": ");
x = scan.nextInt();
}
System.out.println("n"+ "\t" + "X0" + "\t" + "Xn+1");

File archivo = new File("resultados.txt");


FileWriter fw;
BufferedWriter bf;
PrintWriter pw;
try {
fw = new FileWriter(archivo);
bf = new BufferedWriter(fw);
pw = new PrintWriter(bf);
try {
if(archivo.createNewFile())

{
System.out.println("Se ha creado el archivo");
}
} catch (IOException ex) {
JOptionPane.showMessageDialog(null, ex);
}
LinkedList<Integer> aa = new LinkedList();
LinkedList<Integer> cc = new LinkedList();
for (int i = 0; i < m; i++) {
if((i % 2 != 0 )&& (i % 3 != 0 && i % 5 != 0))
{
aa.add(i);
}
if((i % 2 != 0 )&& (i%m==5))
{
cc.add(i);
}
}
//
//
//
//
//
//

//
//
//
//
//
//
//
//
//
//

for (int j = 0; j < m; j++) {


if((j % 2 != 0 )&& (j%m==5))
{
cc.add(j);
}
}
for (int k = 0; k < aa.size(); k++) {
for (int l = 0; l < cc.size(); l++) {
metodoMixto(x, aa.get(k), cc.get(l), m, pw);
}
}
pw.close();
bf.close();
fw.close();
} catch (IOException ex) {
Logger.getLogger(GenMixto.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println("");
System.out.println("Introduce el valor del elemento multiplicativo(a): ");
int a = scan.nextInt();
while(!(a % 2 == 0 )&& (a % 3 != 0 || a % 5 != 0))
{
System.out.println("Introduce el valor del elemento multiplicativo(a) por favor: ");
a = scan.nextInt();
}
System.out.println("");
System.out.println("Introduce el valor del modulo(m)");

//
//
//
//
//
//
//
//

int m = scan.nextInt();
System.out.println("Introduce el valor del elemento aditivo(c): ");
int c = scan.nextInt();
while(a % 2 != 0 || c % m == 5)
{
System.out.println("Introduce de nuevo el valor del elemento aditivo(c) por favor: ");
c = scan.nextInt();
}
}

También podría gustarte