Skip to content

Instantly share code, notes, and snippets.

@juliozuppa
Created February 15, 2018 18:57
Show Gist options
  • Save juliozuppa/0d9c90932a0d319102e92e7f633ebf96 to your computer and use it in GitHub Desktop.
Save juliozuppa/0d9c90932a0d319102e92e7f633ebf96 to your computer and use it in GitHub Desktop.
Gera um número incrivelmente grande. Mas deve-se tomar cuidado com o limite de memória definido no php e o limite de tempo de execução de um script. Levando em consideração que cada caractere/digito consome 1 byte de memória . Desse modo, 1.000.000 caracteres consumirá aproximadamente 1.2MB
<?php
/**
* Method generateRandomNumber
*
* Gera um número incrivelmente grande. Mas deve-se tomar cuidado
* com o limite de memória definido no php e
* o limite de tempo de execução de um script.
* Levando em consideração que cada caractere/digito consome 1 byte de memória
* 1.000.000 caracteres consumirá aproximadamente 1,2MB
*
* @author Julio Cesar <[email protected]>
*
* @param $digits
*
* @return bool|string
*
*/
function generateRandomNumber($digits)
{
$randomStr = mt_rand();
$len = strlen($randomStr);
while ($len < $digits) {
$randomStr .= mt_rand();
$len = strlen($randomStr);
}
//echo (memory_get_peak_usage(true)/1024/1024) . ' MB' . PHP_EOL;
return substr($randomStr, 0, $digits);
}
/*
$start = microtime(true);
for($i = 0; $i<1000; $i++) {
echo generateRandomNumber(20) . PHP_EOL;
}
$final = microtime(true) - $start;
echo PHP_EOL . 'Tempo: ' . $final . ' segundos' . PHP_EOL . PHP_EOL;
*/
$start = microtime(true);
generateRandomNumber(1000000) . PHP_EOL;
$final = microtime(true) - $start;
echo PHP_EOL . 'Tempo: ' . $final . ' segundos' . PHP_EOL;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment