<?php /** * Retorna um vetor de tamanho $count com numeros aleatorios entre $min e $max * @param int $min Menor valor possivel para o valor randomico * @param int $max Maior valor possivel para o valor randomico * @param int $count Numero de elementos desejados no vetor resultante * @param bool $unico Flag indicando se o vetor resultante sera unico (sem valores repetidos) * @return array[int] Vetor de valores aleatorios */ function rand2($min = 0, $max = 0, $count = 1, $unico = true) { $min = intval($min); $max = min(mt_getrandmax(), intval($max)); $count = abs($count); $vetor = array(); if ($unico) { $total_valores = ($max - $min) + 1; if ($count > $total_valores) { trigger_error('Impossivel retornar '.$count.' valores unicos em um conjunto de '.$total_valores.' valores', E_USER_WARNING); return false; } $valores = range($min, $max); for ($n = 0; $n < $count; $n++) { $posicao = mt_rand(0, $total_valores - 1); $vetor[] = $valores[$posicao]; $total_valores -= 1; unset($valores[$posicao]); $valores = array_values($valores); } } else { for ($n = 0; $n < $count; $n++) { $vetor[] = mt_rand($min, $max); } } return $vetor; }