getRandomNumbers(int num, int min, int max [, bool repeat, bool sort])
Retorno:
array|bool
Descriçã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