Hola!

Registrándote como bakuno podrás publicar, compartir y comunicarte en privado con otros bakuos :D

Regístrame ya!

Ayuda programa de Simulacion. Generador Congruencial Mixto

Xtreme_23

Becerro
Desde
3 Mar 2009
Mensajes
20
Bakun0os urge ayuda please necesito un programa de Simulacion, el generador congruencial mixto, si tienen el codigo me harian un gran favor en C# o en cualquier lenguaje no importa, de antemano muchas gracias. :)
Xn+1 = (aXn + c) mod m
donde Entrada:
Xo = la semilla (Xo = 0)
a = el multiplicador (a > 0)
c = constante aditiva (c > 0)
m = el modulo (m>Xo, m >a y m>c )
Salida:
n Xn (aXn + c) mod m Xn+1 # uniformes
 
/*aqui ta algo en java pero un consejo -- recuerda que cuando termines la carrera tendras competencia, y aquiellos que te ayudaron asi son tus peores enemigos*/

package aleatoreos;
public class congruencialMultilpicativo
{


public static String[][] generar(int semilla,int constanteMultiplicativa,int modulo)
{
IteracionCMul iteracionInicial=null,iteracionFinal=null;
int cantidadDeAleatoreos=0,semillaInicial;

semillaInicial=semilla;



IteracionCMul iteracion=null;
do{
if(iteracionInicial==null)
{
iteracion=new IteracionCMul(semillaInicial, constanteMultiplicativa, modulo);
iteracionInicial=iteracion;
}else{
iteracion=new IteracionCMul(iteracionFinal.nuevaSemilla,constanteMultiplicativa,modulo);
iteracionFinal.siguiente=iteracion;
}

iteracionFinal=iteracion;
cantidadDeAleatoreos=cantidadDeAleatoreos+1;

}while(!seCiclo(iteracionInicial, iteracionFinal));

String[][] numerosAleatoreos=new String[cantidadDeAleatoreos][6];

IteracionCMul iteracion2=iteracionInicial;

for(int contador=0;contador<cantidadDeAleatoreos;contador++)
{
numerosAleatoreos[contador][0]=""+iteracion2.semilla;
numerosAleatoreos[contador][1]=""+iteracion2.constanteMultiplicativa;
numerosAleatoreos[contador][2]=""+iteracion2.modulo;
numerosAleatoreos[contador][3]=""+iteracion2.nuevaSemilla;
numerosAleatoreos[contador][4]=""+iteracion2.numAleatoreoIndicado;
numerosAleatoreos[contador][5]=""+iteracion2.numAleatoreo;
iteracion2=iteracion2.siguiente;
}

return numerosAleatoreos;
}


private static boolean seCiclo(IteracionCMul iteracionInicial,IteracionCMul iteracionFinal){
IteracionCMul iteracion=iteracionInicial;
boolean flag=false;
while(iteracion.siguiente!=null && flag==false){
if(iteracion.semilla==iteracionFinal.nuevaSemilla)flag=true;
iteracion=iteracion.siguiente;
}
return flag;
}



}

class IteracionCMul
{
public IteracionCMul siguiente;
String numAleatoreo,numAleatoreoIndicado;
public int semilla,nuevaSemilla,constanteMultiplicativa,modulo;
public IteracionCMul(int semilla,int constanteMultiplicativa,int modulo){
this.semilla=semilla;
this.constanteMultiplicativa=constanteMultiplicativa;
this.modulo=modulo;
nuevaSemilla=(constanteMultiplicativa*semilla)%modulo;
double a=nuevaSemilla,b=(modulo-1);

this.numAleatoreo=""+(a/b);
this.numAleatoreoIndicado=""+(nuevaSemilla+"/"+(modulo-1));
}

}



// algo mas, creo que te lo paso de un prototipo que habia hecho, es una clase en java, solo llamala y usala
///creo que ya no tenia errores solo has un main
 
Volver
Arriba