<?php
/**
* Générateur de nombres aléatoires utilisant l'algorithme SHA1 sur lui-même.
*
* @param $int_minimum - integer - intevale
* @param $int_maximum - integer - intevale
* @return int - retourne un entier aléatoire dans l'intervale demandé ou un int sinon.
*/
function sha_rand($int_minimum = NULL, $int_maximum = NULL)
{
// On génère une seed.
static $arr_raw_nombre, $int_index;
if (!$arr_raw_nombre)
{
$arr_raw_nombre = sha1(uniqid(mt_rand(), TRUE).microtime().mt_rand(), TRUE);
$int_index = 0;
}
// On regénère le hash que l'on applique à lui-même.
if ($int_index == 5)
{
// Le sha1 renvoie 160 bits soit 5 mots de 32 bits.
$arr_raw_nombre = sha1($arr_raw_nombre, TRUE);
$int_index = 0;
}
// On extrait une valeur (aléatoire) du hash.
$int_valeur_aleatoire = substr($arr_raw_nombre, 4 * $int_index, 4);
$int_valeur_aleatoire = unpack('L', $int_valeur_aleatoire);
$int_valeur_aleatoire = reset($int_valeur_aleatoire);
$int_index++;
// On gère l'intervale demandé.
if (!is_null($int_minimum) && !is_null($int_maximum))
{
if ($int_minimum <= $int_maximum)
{
$int_valeur_aleatoire = $int_minimum + abs($int_valeur_aleatoire) % abs($int_maximum - $int_minimum + 1);
}
}
return $int_valeur_aleatoire;
}
$arr_int_nombre = array();
foreach(range(1, 5) as $z)
{
do
{
$int_nombre = sha_rand(1, 49);
}
while (in_array($int_nombre, $arr_int_nombre));
$arr_int_nombre[] = $int_nombre;
}
sort($arr_int_nombre, SORT_NUMERIC);
echo '<table style="font-family:monospace"><tr>';
foreach ($arr_int_nombre as $int_nombre)
{
$int_nombre = str_pad($int_nombre, 3, ' ', STR_PAD_LEFT);
$int_nombre = str_replace(' ', ' ', $int_nombre);
echo '<td>'.$int_nombre.'</td>';
}
$int_nombre = sha_rand(1, 10);
$int_nombre = str_pad($int_nombre, 5, ' ', STR_PAD_LEFT);
$int_nombre = str_replace(' ', ' ', $int_nombre);
echo '<td><b>'.$int_nombre.'</d></td>';
echo '</tr></table>';
echo '<hr />';
highlight_file(__FILE__);