//ESTA ES LA CLASE QUE CONTIENE LOS METODOS:
public class MetodosCongruenciales
{
private double suma,r,varianza,media;
public void ResetearValores( )
{
suma= 0 ;
varianza= 0 ;
media= 0 ;
r= 0 ;
}
public void Congruencial( int x,int a,int b,int m)
{
ResetearValores( ) ;
System .
out .
println ( "M É T O D O C O N G R U E N C I A L" ) ; for ( int i= 1 ; i<= ( m- 1 ) ; i++ )
{
x= ( ( a* x) + b) % m;
r= x/ ( m- 1.0 ) ;
suma+= r;
media= suma/ ( m- 1.0 ) ;
varianza
+= Math .
pow ( r
- media,
2 ) ; System .
out .
println ( "x" + i
+ " = " + x
+ "\n r" + i
+ " = " + r
) ; }
varianza/= m- 1.0 ;
System .
out .
println ( "La sumatoria de los números pseudoaleatorios generados es: " + suma
) ; System .
out .
println ( "La media de los números pseudoaleatorios generados es: " + media
) ; System .
out .
println ( "La varianza de los números pseudoaleatorios generados es: " + varianza
) ; }
public void CongruencialAditivo( int x,int b,int m)
{
ResetearValores( ) ;
System .
out .
println ( "_________________… System.out.println(" M É T O D O C O N G R U E N C I A L A D I T I V O");
for(int i=1;i<=(m-1);i++)
{
x=(x+b)%m;
r=x/31.0;
suma+=r;
media=suma/(m-1.0);
varianza+=Math.pow(r-media, 2);
System.out.println(" x"+i+" = "+x+" \nr"+i+" = "+r);
}
varianza/=m-1.0;
System.out.println(" La sumatoria de los números pseudoaleatorios generados es: "+suma);
System.out.println(" La media de los números pseudoaleatorios generados es: "+media);
System.out.println(" La varianza de los números pseudoaleatorios generados es: "+varianza);
}
public void CongruencialMultiplicativo(int x,int a,int m)
{
ResetearValores();
System.out.println(" _________________…
System .
out .
println ( "M É T O D O C O N G R U E N C I A L M U L T I P L I C A T I V O" ) ; for ( int i= 1 ; i<= ( m- 1 ) ; i++ )
{
x= ( a* x) % m;
r= x/ 31.0 ;
suma+= r;
media= suma/ ( m- 1.0 ) ;
varianza
+= Math .
pow ( r
- media,
2 ) ; System .
out .
println ( "x" + i
+ " = " + x
+ "\n r" + i
+ " = " + r
) ; }
varianza/= m- 1.0 ;
System .
out .
println ( "La sumatoria de los números pseudoaleatorios generados es: " + suma
) ; System .
out .
println ( "La media de los números pseudoaleatorios generados es: " + media
) ; System .
out .
println ( "La varianza de los números pseudoaleatorios generados es: " + varianza
) ; }
}
//ESTA ES LA CLASE QUE HACE USO DE LAS TRES FUNCIONES PARA GENERAR NUMEROS ALEATORIOS
package Congruenciales ;
public class PMetodosCongruenciales
{
public static void main
( String [ ] args
) {
MetodosCongruenciales obc= new MetodosCongruenciales( ) ;
String menu
[ ] = { "Especificar valores" ,
"Congruencial Mixto" ,
"Congruencial Aditivo" ,
"Congruencial Multiplicativo" ,
"Salir" } ; Menu obm
= new Menu ( "Metodos Congruenciales Lineales" ,menu
) ; int x= 0 ,a= 0 ,b= 0 ,m= 0 ,opc;
do
switch ( opc= obm.Opcion ( ) )
{
case 1 :
x= obm.obd .Entero ( "Especifique el valor de la semilla: " ) ;
a= obm.obd .Entero ( "Especifique el valor de a: " ) ;
b= obm.obd .Entero ( "Especifique el valor de b: " ) ;
m= obm.obd .Entero ( "Especifique el valor de m: " ) ;
break ;
case 2 :
if ( x!= 0 || a!= 0 || b!= 0 || m!= 0 )
obc.Congruencial ( x, a, b, m) ;
break ;
case 3 :
if ( x!= 0 || b!= 0 || m!= 0 )
obc.CongruencialAditivo ( x, b, m) ;
break ;
case 4 :
if ( x!= 0 || a!= 0 || m!= 0 )
obc.CongruencialMultiplicativo ( x, a, m) ;
}
while ( opc!= 5 ) ;
}
}
/*TE SERVIRAN, TE LO ASEGURO, PUEDE PARECER QUE NO SON BREVES, PERO *IDENTIFICALAS EN ESE MONTON DE CODIGO JAVA QUE TE PROPORCIONO, SACA *ALGUNAS OTRAS COSAS QUE TU NO OCUPAS, PERO LO QUE SON LOS NUMEROS SI LOS SACA, VELO Y KITALE LO Q TENGA DE MAS Q NO T SIRVA*/
Ly9FU1RBIEVTIExBIENMQVNFIFFVRSBDT05USUVORSBMT1MgTUVUT0RPUzoKcHVibGljIGNsYXNzIE1ldG9kb3NDb25ncnVlbmNpYWxlcwp7CnByaXZhdGUgZG91YmxlIHN1bWEscix2YXJpYW56YSxtZWRpYTsKcHVibGljIHZvaWQgUmVzZXRlYXJWYWxvcmVzKCkKewpzdW1hPTA7CnZhcmlhbnphPTA7Cm1lZGlhPTA7CnI9MDsKfQpwdWJsaWMgdm9pZCBDb25ncnVlbmNpYWwoaW50IHgsaW50IGEsaW50IGIsaW50IG0pCnsKUmVzZXRlYXJWYWxvcmVzKCk7ClN5c3RlbS5vdXQucHJpbnRsbigiTSDDiSBUIE8gRCBPIEMgTyBOIEcgUiBVIEUgTiBDIEkgQSBMIik7CmZvcihpbnQgaT0xO2k8PShtLTEpO2krKykKewp4PSgoYSp4KStiKSVtOwpyPXgvKG0tMS4wKTsKc3VtYSs9cjsKbWVkaWE9c3VtYS8obS0xLjApOwp2YXJpYW56YSs9TWF0aC5wb3coci1tZWRpYSwgMik7ClN5c3RlbS5vdXQucHJpbnRsbigieCIraSsiID0gIit4KyJcbnIiK2krIiA9ICIrcik7Cn0KdmFyaWFuemEvPW0tMS4wOwpTeXN0ZW0ub3V0LnByaW50bG4oIkxhIHN1bWF0b3JpYSBkZSBsb3MgbsO6bWVyb3MgcHNldWRvYWxlYXRvcmlvcyBnZW5lcmFkb3MgZXM6ICIrc3VtYSk7ClN5c3RlbS5vdXQucHJpbnRsbigiTGEgbWVkaWEgZGUgbG9zIG7Dum1lcm9zIHBzZXVkb2FsZWF0b3Jpb3MgZ2VuZXJhZG9zIGVzOiAiK21lZGlhKTsKU3lzdGVtLm91dC5wcmludGxuKCJMYSB2YXJpYW56YSBkZSBsb3MgbsO6bWVyb3MgcHNldWRvYWxlYXRvcmlvcyBnZW5lcmFkb3MgZXM6ICIrdmFyaWFuemEpOwp9CgpwdWJsaWMgdm9pZCBDb25ncnVlbmNpYWxBZGl0aXZvKGludCB4LGludCBiLGludCBtKQp7ClJlc2V0ZWFyVmFsb3JlcygpOwpTeXN0ZW0ub3V0LnByaW50bG4oIl9fX19fX19fX19fX19fX19f4oCmClN5c3RlbS5vdXQucHJpbnRsbigiTSDDiSBUIE8gRCBPIEMgTyBOIEcgUiBVIEUgTiBDIEkgQSBMIEEgRCBJIFQgSSBWIE8iKTsKZm9yKGludCBpPTE7aTw9KG0tMSk7aSsrKQp7Cng9KHgrYiklbTsKcj14LzMxLjA7CnN1bWErPXI7Cm1lZGlhPXN1bWEvKG0tMS4wKTsKdmFyaWFuemErPU1hdGgucG93KHItbWVkaWEsIDIpOwpTeXN0ZW0ub3V0LnByaW50bG4oIngiK2krIiA9ICIreCsiXG5yIitpKyIgPSAiK3IpOwp9CnZhcmlhbnphLz1tLTEuMDsKU3lzdGVtLm91dC5wcmludGxuKCJMYSBzdW1hdG9yaWEgZGUgbG9zIG7Dum1lcm9zIHBzZXVkb2FsZWF0b3Jpb3MgZ2VuZXJhZG9zIGVzOiAiK3N1bWEpOwpTeXN0ZW0ub3V0LnByaW50bG4oIkxhIG1lZGlhIGRlIGxvcyBuw7ptZXJvcyBwc2V1ZG9hbGVhdG9yaW9zIGdlbmVyYWRvcyBlczogIittZWRpYSk7ClN5c3RlbS5vdXQucHJpbnRsbigiTGEgdmFyaWFuemEgZGUgbG9zIG7Dum1lcm9zIHBzZXVkb2FsZWF0b3Jpb3MgZ2VuZXJhZG9zIGVzOiAiK3ZhcmlhbnphKTsKfQoKcHVibGljIHZvaWQgQ29uZ3J1ZW5jaWFsTXVsdGlwbGljYXRpdm8oaW50IHgsaW50IGEsaW50IG0pCnsKUmVzZXRlYXJWYWxvcmVzKCk7ClN5c3RlbS5vdXQucHJpbnRsbigiX19fX19fX19fX19fX19fX1/igKYKU3lzdGVtLm91dC5wcmludGxuKCJNIMOJIFQgTyBEIE8gQyBPIE4gRyBSIFUgRSBOIEMgSSBBIEwgTSBVIEwgVCBJIFAgTCBJIEMgQSBUIEkgViBPIik7CmZvcihpbnQgaT0xO2k8PShtLTEpO2krKykKewp4PShhKngpJW07CnI9eC8zMS4wOwpzdW1hKz1yOwptZWRpYT1zdW1hLyhtLTEuMCk7CnZhcmlhbnphKz1NYXRoLnBvdyhyLW1lZGlhLCAyKTsKU3lzdGVtLm91dC5wcmludGxuKCJ4IitpKyIgPSAiK3grIlxuciIraSsiID0gIityKTsKfQp2YXJpYW56YS89bS0xLjA7ClN5c3RlbS5vdXQucHJpbnRsbigiTGEgc3VtYXRvcmlhIGRlIGxvcyBuw7ptZXJvcyBwc2V1ZG9hbGVhdG9yaW9zIGdlbmVyYWRvcyBlczogIitzdW1hKTsKU3lzdGVtLm91dC5wcmludGxuKCJMYSBtZWRpYSBkZSBsb3MgbsO6bWVyb3MgcHNldWRvYWxlYXRvcmlvcyBnZW5lcmFkb3MgZXM6ICIrbWVkaWEpOwpTeXN0ZW0ub3V0LnByaW50bG4oIkxhIHZhcmlhbnphIGRlIGxvcyBuw7ptZXJvcyBwc2V1ZG9hbGVhdG9yaW9zIGdlbmVyYWRvcyBlczogIit2YXJpYW56YSk7Cn0KfQovL0VTVEEgRVMgTEEgQ0xBU0UgUVVFIEhBQ0UgVVNPIERFIExBUyBUUkVTIEZVTkNJT05FUyBQQVJBIEdFTkVSQVIgTlVNRVJPUyBBTEVBVE9SSU9TCnBhY2thZ2UgQ29uZ3J1ZW5jaWFsZXM7CgpwdWJsaWMgY2xhc3MgUE1ldG9kb3NDb25ncnVlbmNpYWxlcwp7CnB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpCnsKTWV0b2Rvc0NvbmdydWVuY2lhbGVzIG9iYz1uZXcgTWV0b2Rvc0NvbmdydWVuY2lhbGVzKCk7ClN0cmluZyBtZW51W109eyJFc3BlY2lmaWNhciB2YWxvcmVzIiwiQ29uZ3J1ZW5jaWFsIE1peHRvIiwiQ29uZ3J1ZW5jaWFsIEFkaXRpdm8iLCJDb25ncnVlbmNpYWwgTXVsdGlwbGljYXRpdm8iLCJTYWxpciJ9OwpNZW51IG9ibT1uZXcgTWVudSgiTWV0b2RvcyBDb25ncnVlbmNpYWxlcyBMaW5lYWxlcyIsbWVudSk7CmludCB4PTAsYT0wLGI9MCxtPTAsb3BjOwpkbwpzd2l0Y2gob3BjPW9ibS5PcGNpb24oKSkKewpjYXNlIDE6Cng9b2JtLm9iZC5FbnRlcm8oIkVzcGVjaWZpcXVlIGVsIHZhbG9yIGRlIGxhIHNlbWlsbGE6ICIpOwphPW9ibS5vYmQuRW50ZXJvKCJFc3BlY2lmaXF1ZSBlbCB2YWxvciBkZSBhOiAiKTsKYj1vYm0ub2JkLkVudGVybygiRXNwZWNpZmlxdWUgZWwgdmFsb3IgZGUgYjogIik7Cm09b2JtLm9iZC5FbnRlcm8oIkVzcGVjaWZpcXVlIGVsIHZhbG9yIGRlIG06ICIpOwpicmVhazsKY2FzZSAyOgppZih4IT0wfHxhIT0wfHxiIT0wfHxtIT0wKQpvYmMuQ29uZ3J1ZW5jaWFsKHgsIGEsIGIsIG0pOwpicmVhazsKY2FzZSAzOgppZih4IT0wfHxiIT0wfHxtIT0wKQpvYmMuQ29uZ3J1ZW5jaWFsQWRpdGl2byh4LCBiLCBtKTsKYnJlYWs7CmNhc2UgNDoKaWYoeCE9MHx8YSE9MHx8bSE9MCkKb2JjLkNvbmdydWVuY2lhbE11bHRpcGxpY2F0aXZvKHgsIGEsIG0pOwp9CndoaWxlKG9wYyE9NSk7Cn0KfQoKLypURSBTRVJWSVJBTiwgVEUgTE8gQVNFR1VSTywgUFVFREUgUEFSRUNFUiBRVUUgTk8gU09OIEJSRVZFUywgUEVSTyAqSURFTlRJRklDQUxBUyBFTiBFU0UgTU9OVE9OIERFIENPRElHTyBKQVZBIFFVRSBURSBQUk9QT1JDSU9OTywgU0FDQSAqQUxHVU5BUyBPVFJBUyBDT1NBUyBRVUUgVFUgTk8gT0NVUEFTLCBQRVJPIExPIFFVRSBTT04gTE9TIE5VTUVST1MgU0kgTE9TIFNBQ0EsIFZFTE8gWSBLSVRBTEUgTE8gUSBURU5HQSBERSBNQVMgUSBOTyBUIFNJUlZBKi8=