Вы находитесь на странице: 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);
}
}

}

}