0% encontró este documento útil (1 voto)
8K vistas9 páginas

Programa de Los Cuadrados Medios

1) Los documentos describen programas para generar números pseudoaleatorios usando el método de los cuadrados medios en diferentes lenguajes de programación como Visual Basic, Java y PHP. 2) El método de los cuadrados medios involucra elevar al cuadrado un número semilla inicial, seleccionar dígitos de la parte central del resultado y usarlos como la nueva semilla para la siguiente iteración. 3) Los programas implementan este método tomando una semilla, calculando sus sucesivos cuadrados, extrayendo dígitos centrales y repitiendo

Cargado por

mfloza4585
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 DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (1 voto)
8K vistas9 páginas

Programa de Los Cuadrados Medios

1) Los documentos describen programas para generar números pseudoaleatorios usando el método de los cuadrados medios en diferentes lenguajes de programación como Visual Basic, Java y PHP. 2) El método de los cuadrados medios involucra elevar al cuadrado un número semilla inicial, seleccionar dígitos de la parte central del resultado y usarlos como la nueva semilla para la siguiente iteración. 3) Los programas implementan este método tomando una semilla, calculando sus sucesivos cuadrados, extrayendo dígitos centrales y repitiendo

Cargado por

mfloza4585
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 DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 9

PROGRAMA DE LOS CUADRADOS MEDIOS EN VISUAL BASIC

' gambas module file


PUBLIC SUB Main()

DIM semilla AS String
DIM D AS Integer
DIM aux AS Integer
DIM N AS Integer, iCount AS Integer
DIM x AS String
DIM y AS String

semilla = Application.Args[1]
N = Val(Application.Args[2])
D = Len(semilla)

FOR iCount = 1 TO N
y = Format$(Val(semilla) ^ 2, "#")

aux = Len(y)
IF aux < D THEN
x = String$(D - aux, "0") & y
ELSE IF D MOD 2 THEN ' D impar
IF NOT (aux MOD 2) THEN y = "0" & y ' Len(y) no es impar, hacer impar
x = Mid$(y, (Len(y) - D) / 2 + 1, D)
ELSE ' D par
IF aux MOD 2 THEN y = "0" & y ' Len(y) es impar, hacer par
x = Mid$(y, (Len(y) - D) / 2 + 1, D)
ENDIF

semilla = x
PRINT "y[" & iCount & "]= " & y & " ";
PRINT "x[" & iCount & "]= " & x & " ";
PRINT "r[" & iCount & "]= " & "0." & x
NEXT

END

$ ./cmedios.gambas 5735 4
y[1]= 32890225 x[1]= 8902 r[1]= 0.8902
y[2]= 79245604 x[2]= 2456 r[2]= 0.2456
y[3]= 06031936 x[3]= 0319 r[3]= 0.0319
y[4]= 101761 x[4]= 0176 r[4]= 0.0176

PROGRAMA DE LOS CUADRADOS MEDIOS EN JAVA
import java.io.*;
import javax.swing.JOptionPane;

class Cuadrado
{
public static void main(String arg[])throws IOException
{

BufferedReader entrada=new BufferedReader(new
InputStreamReader(System.in));

int cantidad,semilla=1835;
int tamano1,tamano2,i;
String cadena,new_numero;
cadena=String.valueOf(semilla); //
conversion de entero a cadena
tamano1=cadena.length(); //
tamao de la cadena

double semilla_cuadrada=0;

cantidad=Integer.parseInt(JOptionPane.showInputDialog(" NUMEROS A
GENERAR"));


for(i=0; i<cantidad; i++)
{
semilla_cuadrada=Math.pow(semilla,2);
new_numero=proceso_seleccion(semilla_cuadrada,tamano1);
Integer entero=new Integer(new_numero);
semilla=entero.intValue();
System.out.println(semilla);

}

}

static String proceso_seleccion(double recibe_semilla,int tamano1)
{
int tamano2,resta,contador=0; int i,posicion=0;
String new_cadena="",cadena;

int semilla=(int)recibe_semilla;
cadena=String.valueOf(semilla); // conversion de entero a cadena
tamano2=cadena.length(); // tamao de la cadena

resta=(tamano2)-tamano1;
posicion=tamano2%tamano1;

if (posicion==0)
{
posicion=tamano2/tamano1;
for(i=posicion; ; i++)
{
if (contador!=tamano1)
{
new_cadena+=cadena.charAt(i);
contador++;
}
else
{
break;
}

}
}
else
{
for(i=posicion-1; ; i++)
{
if (contador!=tamano1)
{
new_cadena+=cadena.charAt(i);
contador++;
}
else
{
break;
}
}

}
return new_cadena;
}
static int tamano(double semilla)
{
int i=0,c=0;
for(i=0; i<20; i++)
{
c++;
semilla=semilla/10;

if (semilla<10)
{
c++;
i=20;
}
}
return c;
}
}

PROGRAMA DE LOS CUADRADOS MEDIOS EN PHP
<?php
echo "Cuadrados medios <br>";
$n = $_POST[n];
// $n toma el valor de la casilla n
$x0 = $_POST[x0];
// $x0 toma el valor de la casilla x0 Semilla
$m = $_POST[m];
// $m toma el valor de la casilla Cantidad de nmeros aleatorios

// Creamos el bucle para que se generen los numeros hasta la cantidad de
numeros deseada M
for($i=1;$i<=$m;$i++)
{
$x1= $x0*$x0;
//multiplicando x0 entre x0

$f=pow(10,$n);
// obtengo

$w=$x1/$f;

$g=2*$n;
$h=pow(10,$g);
$y=fmod($w,$h);
printf("%ld",$y);
$xo=$y;
}
?>

METODO DE CUADRADOS MEDIOS (CODIGO JAVA)
Un primer mtodo a estudiar en la generacin de nmeros pseudoaleatorios es el de los
Cuadrados Medios siguiendo estos pasos.

1.- Generar una Semilla Xo
2.- Obtener el cuadrado de dicho nmero.
3.- Extraer n digitos de la parte central del nmero obtenido en el punto 2.
4.- Repetir el paso 2 utilizando X1 como la nueva Semilla.

CODIGO EN JAVA (NetBeans)

/**
*
* @author HIMDAWIES
*/
import java.io.*;
import javax.swing.JOptionPane;
public class Cuadrado
{
public static void main(String arg[])throws IOException
{

BufferedReader entrada=new BufferedReader(new InputStreamReader(System.in));

int cantidad,semilla=Integer.parseInt(JOptionPane.showInputDialog(" INTRODUZCA SEMILLA"));;
int tamano1,tamano2,i;
String cadena,new_numero;
cadena=String.valueOf(semilla); // conversion de entero a cadena
tamano1=cadena.length(); // tamao de la cadena

double semilla_cuadrada=0;

cantidad=Integer.parseInt(JOptionPane.showInputDialog(" NUMEROS A GENERAR"));


for(i=0; i<cantidad; i++)
{
semilla_cuadrada=Math.pow(semilla,2);
new_numero=proceso_seleccion(semilla_cuadrada,tamano1);
Integer entero=new Integer(new_numero);
semilla=entero.intValue();
System.out.println(semilla);

}

}

static String proceso_seleccion(double recibe_semilla,int tamano1)
{
int tamano2,resta,contador=0; int i,posicion=0;
String new_cadena="",cadena;

int semilla=(int)recibe_semilla;
cadena=String.valueOf(semilla); // conversion de entero a cadena
tamano2=cadena.length(); // tamao de la cadena

resta=(tamano2)-tamano1;
posicion=tamano2%(tamano1+1);
//posicion=tamano2%tamano1;
tamano1++;

if (posicion==0)
{
posicion=tamano2/tamano1;
for(i=posicion; ; i++)
{
if (contador!=tamano1)
{
new_cadena+=cadena.charAt(i);
contador++;
}
else
{
break;
}

}
}
else
{
for(i=posicion-1; ; i++)
{
if (contador!=tamano1)
{
new_cadena+=cadena.charAt(i);
contador++;
}
else
{
break;
}
}

}
return new_cadena;
}
static int tamano(double semilla)
{
int i=0,c=0;
for(i=0; i<20; i++)
{
c++;
semilla=semilla/10;

if (semilla<10)
{
c++;
i=20;
}
}
return c;
}
}

Generar Numeros Pseudoaleatorios por metodo de
Cuadrado Medio
Bien Ahora veremos como funciona cada libreria
que como sabemos no es mas que un programa normal el cual podemos implementar en otros
programas como veran el algoritmo para generar los numeos no es nada complicado

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CuadradoMedio //este es el nombre de la libreria o el nombre del proyecto
{
public class cuadradoM //es la clase principal de el programa
{
public double[] numeros; // Este arreglo es el que enviaremos de regreso con los numeros
public double[] cuadrado; //Este arreglo son los numeros generados al cuadrado
public string[] completo; //Arreglo con los numeros completos si les faltaba un 0
public string[] central; /los numeros del numcentro

public void Generar(double digitosE, double total, double inicialE)//aqui esta el metodo al que
le enviamos los datos del post pasado
{

double totalnum = total;
double digitos = digitosE;
double inicial = inicialE;
numeros = new double[int.Parse(totalnum.ToString()) + 1];
cuadrado = new double[int.Parse(totalnum.ToString())];
completo = new string[int.Parse(totalnum.ToString())];
central = new string[int.Parse(totalnum.ToString())];

string numero;
numeros[0] = inicial;


for (int i = 1; i <= totalnum; i++)//aqui implementamos el metodo de cuadrado medio
{
inicial = Math.Pow(inicial,2);
cuadrado[i - 1] = inicial;

double equilibrado = (inicial.ToString().Count()) - digitos; //asi sabremos si no faltan 0
double eliminarlugares;
if (equilibrado % 2 == 0)
{
numero = inicial.ToString();
eliminarlugares = equilibrado / 2;
completo[i - 1] = numero;

}
else
{
numero = "0" + inicial.ToString();
eliminarlugares = (equilibrado + 1) / 2;
completo[i - 1] = numero;
}

string numcentro = "X"; //esta cadena ocupara los lugares que no necesitamos
for (int h = 0; h < numero.Count(); h++)
{

if (h < eliminarlugares)
{
numcentro = numcentro + "X";
}
else
if (h >= (eliminarlugares + digitos))
{
numcentro = numcentro + "X";
}
else
numcentro = numcentro + numero[h].ToString();

}
numcentro=numcentro.Replase("X",""); //aqui cambiamos las X por lugares vacios
central[i - 1] = numcentro;
numeros[i] = double.Parse(numcentro);//aqui se van guardando los numeros aleatorios
inicial = double.Parse(numcentro);
}
}

}

}

También podría gustarte