Skip to content

Instantly share code, notes, and snippets.

@AntoineAugusti
Created April 7, 2012 11:49
Show Gist options
  • Save AntoineAugusti/2328058 to your computer and use it in GitHub Desktop.
Save AntoineAugusti/2328058 to your computer and use it in GitHub Desktop.
<?php
/*
* Test des fonctions random
* Copyleft 2012 - Antoine AUGUSTI - INSA de Rouen
* www.antoine-augusti.fr - antoine@augusti.fr
*
*/
$nb_tests = 10000000;
$erreur_moyenne = 0;
$somme_erreur = 0;
// Définition des fonctions
function pourcentage($number, $number_max)
{
$pourcentage = round($number/$number_max * 100, 10);
$erreur = round(abs(10 - $pourcentage),10);
return array($pourcentage,$erreur);
}
function microtime_float()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
$time_start = microtime_float();
function number_space ($number)
{
$number_space = number_format($number, 0, ',', ' '); // Arrondi et espaces sur les milliers
return $number_space;
}
// On met à 0 toutes les variables number_0,..., number_9
for($i=0;$i<=9;$i++)
{
$nom_var = 'number_'.$i.'';
${$nom_var} = 0;
}
// La boucle
for ($i=0;$i<=$nb_tests;$i++)
{
// Génère un chiffre aléatoire entre 0 et 9 inclus
$number = rand(0,9);
// On compte le nombre de fois que le chiffre est apparu
switch ($number)
{
case 0 : $number_0++;break;
case 1 : $number_1++;break;
case 2 : $number_2++;break;
case 3 : $number_3++;break;
case 4 : $number_4++;break;
case 5 : $number_5++;break;
case 6 : $number_6++;break;
case 7 : $number_7++;break;
case 8 : $number_8++;break;
case 9 : $number_9++;break;
}
}
// On affiche les résultats avec les données et les fonctions
echo '<hr /><h2>Résultats</h2>';
for ($i=0;$i<=9;$i++)
{
$return = pourcentage(${$nom_var},$nb_tests);
$pourcentage = $return[0];
$erreur = $return[1];
$resultat = number_space(${$nom_var});
$nom_var = 'number_'.$i.'';
$somme_erreur = $somme_erreur + $erreur;
echo 'Nombre de '.$i.' : '.$resultat.' soit '.$pourcentage.' % du total, erreur comparée au taux théorique : '.$erreur.' %.<br>';
}
// On affiche l'erreur moyenne
$erreur_moyenne = $somme_erreur / 10;
echo '<hr /><h2>Erreur moyenne</h2>Erreur moyenne : '.$erreur_moyenne.'%.';
// On donne des statistiques sur le temps de calcul
$time_end = microtime_float();
$time = round($time_end - $time_start, 8);
$nombre_de_tests_par_seconde = number_space(round($nb_tests / $time));
$nb_tests_display = number_space($nb_tests);
echo '<hr /><h2>Temps de calcul</h2>Page générée en '.$time.' s avec '.$nb_tests_display.' tests effectués soit '.$nombre_de_tests_par_seconde.' tests par seconde.';
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment