/* package whatever; // don't place package name! */
import java.util.* ;
import java.lang.* ;
import java.io.* ;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
//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*/
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCS8vRVNUQSBFUyBMQSBDTEFTRSBRVUUgQ09OVElFTkUgTE9TIE1FVE9ET1M6IApwdWJsaWMgY2xhc3MgTWV0b2Rvc0NvbmdydWVuY2lhbGVzIAp7IApwcml2YXRlIGRvdWJsZSBzdW1hLHIsdmFyaWFuemEsbWVkaWE7IApwdWJsaWMgdm9pZCBSZXNldGVhclZhbG9yZXMoKSAKeyAKc3VtYT0wOyAKdmFyaWFuemE9MDsgCm1lZGlhPTA7IApyPTA7IAp9IApwdWJsaWMgdm9pZCBDb25ncnVlbmNpYWwoaW50IHgsaW50IGEsaW50IGIsaW50IG0pIAp7IApSZXNldGVhclZhbG9yZXMoKTsgClN5c3RlbS5vdXQucHJpbnRsbigiTSDDiSBUIE8gRCBPIEMgTyBOIEcgUiBVIEUgTiBDIEkgQSBMIik7IApmb3IoaW50IGk9MTtpPD0obS0xKTtpKyspIAp7IAp4PSgoYSp4KStiKSVtOyAKcj14LyhtLTEuMCk7IApzdW1hKz1yOyAKbWVkaWE9c3VtYS8obS0xLjApOyAKdmFyaWFuemErPU1hdGgucG93KHItbWVkaWEsIDIpOyAKU3lzdGVtLm91dC5wcmludGxuKCJ4IitpKyIgPSAiK3grIlxuciIraSsiID0gIityKTsgCn0gCnZhcmlhbnphLz1tLTEuMDsgClN5c3RlbS5vdXQucHJpbnRsbigiTGEgc3VtYXRvcmlhIGRlIGxvcyBuw7ptZXJvcyBwc2V1ZG9hbGVhdG9yaW9zIGdlbmVyYWRvcyBlczogIitzdW1hKTsgClN5c3RlbS5vdXQucHJpbnRsbigiTGEgbWVkaWEgZGUgbG9zIG7Dum1lcm9zIHBzZXVkb2FsZWF0b3Jpb3MgZ2VuZXJhZG9zIGVzOiAiK21lZGlhKTsgClN5c3RlbS5vdXQucHJpbnRsbigiTGEgdmFyaWFuemEgZGUgbG9zIG7Dum1lcm9zIHBzZXVkb2FsZWF0b3Jpb3MgZ2VuZXJhZG9zIGVzOiAiK3ZhcmlhbnphKTsgCn0gCgpwdWJsaWMgdm9pZCBDb25ncnVlbmNpYWxBZGl0aXZvKGludCB4LGludCBiLGludCBtKSAKeyAKUmVzZXRlYXJWYWxvcmVzKCk7IApTeXN0ZW0ub3V0LnByaW50bG4oIl9fX19fX19fX19fX19fX19fLi4uIApTeXN0ZW0ub3V0LnByaW50bG4oIk0gw4kgVCBPIEQgTyBDIE8gTiBHIFIgVSBFIE4gQyBJIEEgTCBBIEQgSSBUIEkgViBPIik7IApmb3IoaW50IGk9MTtpPD0obS0xKTtpKyspIAp7IAp4PSh4K2IpJW07IApyPXgvMzEuMDsgCnN1bWErPXI7IAptZWRpYT1zdW1hLyhtLTEuMCk7IAp2YXJpYW56YSs9TWF0aC5wb3coci1tZWRpYSwgMik7IApTeXN0ZW0ub3V0LnByaW50bG4oIngiK2krIiA9ICIreCsiXG5yIitpKyIgPSAiK3IpOyAKfSAKdmFyaWFuemEvPW0tMS4wOyAKU3lzdGVtLm91dC5wcmludGxuKCJMYSBzdW1hdG9yaWEgZGUgbG9zIG7Dum1lcm9zIHBzZXVkb2FsZWF0b3Jpb3MgZ2VuZXJhZG9zIGVzOiAiK3N1bWEpOyAKU3lzdGVtLm91dC5wcmludGxuKCJMYSBtZWRpYSBkZSBsb3MgbsO6bWVyb3MgcHNldWRvYWxlYXRvcmlvcyBnZW5lcmFkb3MgZXM6ICIrbWVkaWEpOyAKU3lzdGVtLm91dC5wcmludGxuKCJMYSB2YXJpYW56YSBkZSBsb3MgbsO6bWVyb3MgcHNldWRvYWxlYXRvcmlvcyBnZW5lcmFkb3MgZXM6ICIrdmFyaWFuemEpOyAKfSAKCnB1YmxpYyB2b2lkIENvbmdydWVuY2lhbE11bHRpcGxpY2F0aXZvKGludCB4LGludCBhLGludCBtKSAKeyAKUmVzZXRlYXJWYWxvcmVzKCk7IApTeXN0ZW0ub3V0LnByaW50bG4oIl9fX19fX19fX19fX19fX19fLi4uIApTeXN0ZW0ub3V0LnByaW50bG4oIk0gw4kgVCBPIEQgTyBDIE8gTiBHIFIgVSBFIE4gQyBJIEEgTCBNIFUgTCBUIEkgUCBMIEkgQyBBIFQgSSBWIE8iKTsgCmZvcihpbnQgaT0xO2k8PShtLTEpO2krKykgCnsgCng9KGEqeCklbTsgCnI9eC8zMS4wOyAKc3VtYSs9cjsgCm1lZGlhPXN1bWEvKG0tMS4wKTsgCnZhcmlhbnphKz1NYXRoLnBvdyhyLW1lZGlhLCAyKTsgClN5c3RlbS5vdXQucHJpbnRsbigieCIraSsiID0gIit4KyJcbnIiK2krIiA9ICIrcik7IAp9IAp2YXJpYW56YS89bS0xLjA7IApTeXN0ZW0ub3V0LnByaW50bG4oIkxhIHN1bWF0b3JpYSBkZSBsb3MgbsO6bWVyb3MgcHNldWRvYWxlYXRvcmlvcyBnZW5lcmFkb3MgZXM6ICIrc3VtYSk7IApTeXN0ZW0ub3V0LnByaW50bG4oIkxhIG1lZGlhIGRlIGxvcyBuw7ptZXJvcyBwc2V1ZG9hbGVhdG9yaW9zIGdlbmVyYWRvcyBlczogIittZWRpYSk7IApTeXN0ZW0ub3V0LnByaW50bG4oIkxhIHZhcmlhbnphIGRlIGxvcyBuw7ptZXJvcyBwc2V1ZG9hbGVhdG9yaW9zIGdlbmVyYWRvcyBlczogIit2YXJpYW56YSk7IAp9IAp9IAovL0VTVEEgRVMgTEEgQ0xBU0UgUVVFIEhBQ0UgVVNPIERFIExBUyBUUkVTIEZVTkNJT05FUyBQQVJBIEdFTkVSQVIgTlVNRVJPUyBBTEVBVE9SSU9TIApwYWNrYWdlIENvbmdydWVuY2lhbGVzOyAKCnB1YmxpYyBjbGFzcyBQTWV0b2Rvc0NvbmdydWVuY2lhbGVzIAp7IApwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSAKeyAKTWV0b2Rvc0NvbmdydWVuY2lhbGVzIG9iYz1uZXcgTWV0b2Rvc0NvbmdydWVuY2lhbGVzKCk7IApTdHJpbmcgbWVudVtdPXsiRXNwZWNpZmljYXIgdmFsb3JlcyIsIkNvbmdydWVuY2lhbCBNaXh0byIsIkNvbmdydWVuY2lhbCBBZGl0aXZvIiwiQ29uZ3J1ZW5jaWFsIE11bHRpcGxpY2F0aXZvIiwiU2FsaXIifTsgCk1lbnUgb2JtPW5ldyBNZW51KCJNZXRvZG9zIENvbmdydWVuY2lhbGVzIExpbmVhbGVzIixtZW51KTsgCmludCB4PTAsYT0wLGI9MCxtPTAsb3BjOyAKZG8gCnN3aXRjaChvcGM9b2JtLk9wY2lvbigpKSAKeyAKY2FzZSAxOiAKeD1vYm0ub2JkLkVudGVybygiRXNwZWNpZmlxdWUgZWwgdmFsb3IgZGUgbGEgc2VtaWxsYTogIik7IAphPW9ibS5vYmQuRW50ZXJvKCJFc3BlY2lmaXF1ZSBlbCB2YWxvciBkZSBhOiAiKTsgCmI9b2JtLm9iZC5FbnRlcm8oIkVzcGVjaWZpcXVlIGVsIHZhbG9yIGRlIGI6ICIpOyAKbT1vYm0ub2JkLkVudGVybygiRXNwZWNpZmlxdWUgZWwgdmFsb3IgZGUgbTogIik7IApicmVhazsgCmNhc2UgMjogCmlmKHghPTB8fGEhPTB8fGIhPTB8fG0hPTApIApvYmMuQ29uZ3J1ZW5jaWFsKHgsIGEsIGIsIG0pOyAKYnJlYWs7IApjYXNlIDM6IAppZih4IT0wfHxiIT0wfHxtIT0wKSAKb2JjLkNvbmdydWVuY2lhbEFkaXRpdm8oeCwgYiwgbSk7IApicmVhazsgCmNhc2UgNDogCmlmKHghPTB8fGEhPTB8fG0hPTApIApvYmMuQ29uZ3J1ZW5jaWFsTXVsdGlwbGljYXRpdm8oeCwgYSwgbSk7IAp9IAp3aGlsZShvcGMhPTUpOyAKfSAKfSAKCi8qVEUgU0VSVklSQU4sIFRFIExPIEFTRUdVUk8sIFBVRURFIFBBUkVDRVIgUVVFIE5PIFNPTiBCUkVWRVMsIFBFUk8gKklERU5USUZJQ0FMQVMgRU4gRVNFIE1PTlRPTiBERSBDT0RJR08gSkFWQSBRVUUgVEUgUFJPUE9SQ0lPTk8sIFNBQ0EgKkFMR1VOQVMgT1RSQVMgQ09TQVMgUVVFIFRVIE5PIE9DVVBBUywgUEVSTyBMTyBRVUUgU09OIExPUyBOVU1FUk9TIFNJIExPUyBTQUNBLCBWRUxPIFkgS0lUQUxFIExPIFEgVEVOR0EgREUgTUFTIFEgTk8gVCBTSVJWQSovCgl9Cn0=