Bueno esto no es exactamente pseudo aleatorio pero se parece...
Código PHP:
Ver original<?php
class Aleatorio2
{
/**
* Número de microsegundos que han transcurrido desde $_tiempoUnix
* expresado en segundos.
* @since Muy Variable
* @var string
*/
private $_microSegundos;
/**
* Momento actual medido con el número de segundos desde la época Unix
* (0:00:00 January 1, 1970 GMT)
* @since Variable
* @var string
*/
private $_tiempoUnix;
/**
* Cantidad de memoria asignada a PHP en bytes.
* @since muy Fija
* @var int
*/
private $_memAsignadaPHP;
/**
* Cantidad de memoria en uso por PHP en bytes.
* @since Variable
* @var int
*/
private $_memUsadaPHP;
/**
* Cantidad de memoria usada por el script en ejecucion.
* @since poco Variable
* @var int
*/
private $_memUsadaScript;
/**
* Espacio libre en disco.
* @since variable
* @var int
*/
private $_libreEnDisco;
/**
* Espacio total del disco.
* @since fijo
* @var int
*/
private $_tamanioDisco;
/**
* Valor de hash sha1.
* @var string
*/
private $_sha1;
/**
* Maximo numero aleatorio generado por la clase.
* @var float
*/
private $_maxAleatorio;
/**
* Inicializa la clase.
* Especifica el maximo valor aleatorio que se puede generar.
* @return void
*/
public function __construct()
{
$this->_maxAleatorio
= hexdec('FFFFFFFFFFF'); }
/**
* Genera un numero aleatorio entre 0 y 1.
* @return float
*/
public function aleatorio()
{
$this->_recalcular();
$multiplicador = $this->_microSegundos * $this->_tiempoUnix;
$principio = substr($multiplicador, strpos($multiplicador,'.')-1, 1); $aleatorio = $dividendo / $this->_maxAleatorio;
return $aleatorio;
}
/**
* Recalcula los valores que se toman para calcular el numero pseudo-
* aleatorio.
* @return void
*/
private function _recalcular()
{
$this->_microSegundos = $datosVariables[0];
$this->_tiempoUnix = $datosVariables[1];
$sha1 = $this->_microSegundos
. $this->_tiempoUnix
. $this->_memAsignadaPHP
. $this->_memUsadaPHP
. $this->_memUsadaScript
. $this->_tamanioDisco
. $this->_libreEnDisco;
$this->_sha1
= sha1($sha1); }
}
// Ejemplo
$obj = new Aleatorio2();
$min = 1;
$max = 10;
for($i=1; $i<10000; $i++) {
$nro = $obj->aleatorio();
$aleat = $min + intval(($max - $min +1 )* $nro); $arreglo[$aleat]++;
}
echo '<pre>';
echo '</pre>';
Lo único que tiene es Sha1 pero no se usa para aleatorizar cosas solo es para obtener hash.