Created
May 12, 2020 16:42
-
-
Save intelguasoft/1b4bf4a378295112d2b43e9329bd446d to your computer and use it in GitHub Desktop.
Clase para generar numero aleatorios
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Clase para la generación de números aleatorios de manera | |
* personalizada por medio de argumentos. | |
* | |
* @package IntelGUA | |
* @subpackage Generators | |
* @author Henry Díaz <[email protected]> | |
*/ | |
namespace IntelGUA\Generators; | |
class Generate | |
{ | |
protected $currentNumber = ""; | |
protected $listNumbers = []; | |
/** | |
* Permite obtener una determinada cantidad de números aleatorios | |
* indicada en el argumento $quantity, ya sea que los números sean | |
* únicos o se puedan repetir indicándolo en el argumento $unique. | |
* | |
* El resultado devuelto por el método es un array conteniendo la | |
* cantidad de números generados. | |
* | |
* @param int $quantity | |
* @param boolean $unique | |
* @return array | |
*/ | |
public function getNumbersGenerated($quantity = 10, $unique = true, $length = 4) | |
{ | |
//dd($this->generateNumber(2)); | |
/* $this->currentNumber = $this->generateNumber($length); | |
for ($i=1; $i <= $quantity; $i++) { | |
if (in_array((string)$this->currentNumber, $this->listNumbers)) { | |
$this->currentNumber = $this->generateNumber($length); | |
} | |
} */ | |
$this->listNumbers[] = $this->generateNumber($length); | |
while (count($this->listNumbers) <= $quantity) { | |
$this->currentNumber = $this->generateNumber($length); | |
if (in_array((string)$this->currentNumber, $this->listNumbers)) { | |
continue; | |
}else { | |
$this->listNumbers[] = $this->currentNumber; | |
} | |
} | |
return $this->listNumbers; | |
} | |
/** | |
* Genera un numero de manera aleatoria. | |
* | |
* El número generado es formado por la cantidad | |
* de dígitos que se indica en el parámetro $length. | |
* | |
* @param int $length | |
* @return string | |
*/ | |
public function generateNumber($length = 4){ | |
$chars = '1234567890'; /** Caracteres permitidos para formar la cantidad */ | |
$chars_length = (strlen($chars) - 1); /** Designamos el largo de la cadena */ | |
$string = $chars{rand(0, $chars_length)}; | |
for ($i = 1; $i < $length; $i = strlen($string)) | |
{ | |
$r = $chars{rand(0, $chars_length)}; | |
if ($r != $string{$i - 1}) $string .= $r; | |
} | |
return $string; /** Devolvemos la cantidad formada como cadena */ | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment