Ayuda con PHP

Forums: 

Buenas querí saber si me pueden ayudar con el siguiente problema, estoy tratando de generar números aleatorios mediante el metodo de cuadrados medios con el siguiente codigo:


<?php
echo "Cuadrados medios
";
$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 números 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;
}
?>

El código fue pasado de c++ y no corre igual, por favor ayudenme.

Para el archivo

Imagen de JCMilleniuM

Les paso el programa generador de números pseudo aleatorios con el método de los cuadrados medios:


<?php
//CUADRADOS MEDIOS
$nc = $_POST['n'];
// $n cantidad de cifras
$x0c = $_POST['x0'];
// $x0 Semilla
$mc = $_POST['m'];
// $m Cantidad de números aleatorios

// Creamos el bucle para que se generen los numeros hasta la cantidad de numeros deseada M
for($ic=1;$ic<=$mc;$ic++)
{
$x1c= $x0c*$x0c;
//Generamos x1
//1040400
$fc=pow(10,$nc);
// obtengo 10^$nc
//100
$wc=$x1c/$fc;
//10404
$gc=2*$nc;
//4
$hc=pow(10,$gc);
//10000
$yc=fmod($wc,$hc);
//404
settype($yc, "integer");
//convierto a entero
echo "$yc
";
//imprimo la variable con salto de linea para q no se confunda
$x0c=$yc;
//convierto la variable al valor inicial para que continue el bucle
}
?>

Gracias a quienes respondieron muy amablemente ;).

JC

--
Ing. Juan Carlos Moreno A.

Generador de números aleatorios con e método de Lehmer

Imagen de JCMilleniuM

Bueno ya que les puse el de arriba también les paso el de lehmer, busqué en internet pero no lo encontré en php.


<?php
//METODO DE LEHMER
$nl = $_POST[nl];
// $nl numero de cifras
$kl = $_POST[kl];
// $nl numero menor a n (n-k)
$x0l = $_POST[x0l];
// $x0l Semilla
$xkl = $_POST[xkl];
// $xkl Numero Multiplicador
$ml = $_POST[ml];
//Obtengo cantidad de números a generar

// Creamos el bucle para que se generen los numeros hasta la cantidad de numeros deseada M
for($il=1;$il<=$ml;$il++)
{
$x1l=$x0l*$xkl;
//Multiplico la semilla por el multiplicador para obtener $x1l
//43920
$fl=pow(10,$nl);
//Obtengo el valor multiplo de 10 para obtener el numero que resta
//1000
$restador=$x1l/$fl;
//Obtengo los dos primeros digitos "el que resta"
settype($restador, "integer");
//convierto a entero
//43
$gl=$restador*$fl;
//43000
$resultado=$x1l-$gl;
//Obtengo el número a restar
//920
echo "$resultado
";
$siguiente=$resultado-$restador;
//
$x0l=$siguiente;
//convierto la variable al valor inicial para que continue el bucle
}
?>

Saludos!

--
Ing. Juan Carlos Moreno A.

Corrección al metodo de generación de números aleatorios lehmer

Imagen de JCMilleniuM

Mil disculpas el valor sale de X1


<?php
//METODO DE LEHMER
$nl = $_POST[nl];//3
// $nl numero de cifras
$x0l = $_POST[x0l];//243
// $x0l Semilla
$xkl = $_POST[xkl];//64
// $xkl Numero Multiplicador
$ml = $_POST[ml];//5
//Obtengo cantidad de números a generar

// Creamos el bucle para que se generen los numeros hasta la cantidad de numeros deseada M
for($il=1;$il<=$ml;$il++)
{
$x1l=$x0l*$xkl;//15552
//Multiplico la semilla por el multiplicador para obtener $x1l
$fl=pow(10,$nl);//3
//Obtengo el valor multiplo de 10 para obtener el numero que resta
//1000
$restador=$x1l/$fl;//15552/1000=15,552
//Obtengo los dos primeros digitos "el que resta"
settype($restador, "integer");//
//convierto a entero
//15
$gl=$restador*$fl;
//15*1000=15000
$resultadoresta=$x1l-$gl;
//Obtengo el número a restar
//552
$resultado=$resultadoresta-$restador;
echo "$resultado
";
//$siguiente=$resultado-$restador;
//
$x0l=$resultado;
//convierto la variable al valor inicial para que continue el bucle
}
?>

--
Ing. Juan Carlos Moreno A.