getRandomNumbers(int num, int min, int max [, bool repeat, bool sort])Retorno:
array|boolDescrição: Esta função, contém 3 parâmetros necessários e mais 2 opcionais. O parâmetro
num, indica a quantidade de números que se deseja gerar; já o min e max indicam a faixa de números à serem gerados, sendo o número mínimo e máximo respectivamente. O parâmetro opcional repeat indica se os números gerados podem repetir ou não, sendo false (falso) como padrão. Já o sort expecifica se ao final da geração os números devem ser ordenados, sendo false (false) por padrão (os critérios aceitos são as constantes SORT_ASC e SORT_DESC, que significam em ordem crescente e decrescente, respectivamente).Bibliotecas: Nenhuma
Limitações: PHP 4+
Nota: Agradecimentos ao nosso amigo LucasMS, que sugeriu adicionar o novo parâmetro de ordenação.
Função:
<?php
/**
* Generates random numbers
*
* @author Paulo Freitas <paulofreitas dot web at gmail dot com>
* @copyright Copyright (C) 2006-2010 Paulo Freitas
* @license http://creativecommons.org/licenses/by-sa/3.0
* @version 20100107
* @param int $num amount of numbers to generate
* @param int $min minimum number to generate
* @param int $max maximum number to generate
* @param bool $repeat if the numbers can repeat
* @param int|bool $sort if the numbers must be ordered (SORT_ASC to
ascending order and SORT_DESC to descending order)
* @return array|bool array of generated numbers or false when invalid
conditions
*/
function getRandomNumbers($num, $min, $max, $repeat = false, $sort = false)
{
if ((($max - $min) + 1) >= $num) {
$numbers = array();
while (count($numbers) < $num) {
$number = mt_rand($min, $max);
if ($repeat || !in_array($number, $numbers)) {
$numbers[] = $number;
}
}
switch ($sort) {
case SORT_ASC:
sort($numbers);
break;
case SORT_DESC:
rsort($numbers);
break;
}
return $numbers;
}
return false;
}
?>Exemplo de utilização:<?php
if ($numbers = getRandomNumbers(6, 1, 60, false, SORT_ASC)) {
print implode(', ', $numbers);
} else {
print 'A faixa de valores entre $min e $max deve ser igual ou superior à' .
' quantidade de números requisitados';
}
?>Changelog:- 20100107
- Remoção do parâmetro
sort_order; - Otimizações gerais no código. Reduzidas 7 linhas e 289 caracteres (menos ~33,2%);
- Reescrita da documentação phpDoc. Reduzidos 126 caracteres (menos ~14,9%);
- Atualização e modificação da licença. Agora o código usa a licença Creative Commons Attribution-Share Alike 3.0 Unported, que permite que o mesmo possa ser utilizado em projetos comerciais - antes era proibido.
- Remoção do parâmetro
- 20060312
- Versão inicial




















