tubadc 0 Denunciar post Postado Novembro 26, 2010 Boa Tarde, Estou tentando criar uma função para gerar conjuntos de números aleatórios onde não repita nenhum numeral. Por exemplo, quero criar 8 conjuntos de 7 dezenas cada onde nenhuma dezena, entre 1 e 60, se repita entre os 8 conjuntos. A função para gerar os conjuntos já consegui: function geraNumeroJogoMega($nQuant) { $aRand = array(); for ($i=1; $i<=$nQuant; $i++) { $aRand[$i] = $rand = rand(1, 60); while (count($aRand) < $nQuant) if (!in_array($rand, $aRand)) $aRand[] = $rand; else $rand = rand(1, 60); } asort($aRand); return $aRand; } Agora como fazer com que faça o loop 8 vezes, por exemplo, e que não repita nenhum número entre eles, ou seja sobrariam 4 números no exemplo de 1 a 60? Entenderam? Obrigado a todos Abs Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Novembro 26, 2010 <?php $numeros = range( 1 , 60 ); $grupos = array(); $total = 8; $dezenas = 7; shuffle( $numeros ); for ( $i = 0 ; $i < $total ; ++$i ){ $grupos[] = array_splice( $numeros , 0 , $dezenas ); } var_dump( $grupos ); Saída: array(8) { [0]=> array(7) { [0]=> int(45) [1]=> int(50) [2]=> int(33) [3]=> int(16) [4]=> int(30) [5]=> int(28) [6]=> int(52) } [1]=> array(7) { [0]=> int(7) [1]=> int(51) [2]=> int(11) [3]=> int(20) [4]=> int(14) [5]=> int(1) [6]=> int(53) } [2]=> array(7) { [0]=> int(5) [1]=> int(42) [2]=> int(56) [3]=> int(22) [4]=> int(26) [5]=> int(6) [6]=> int(55) } [3]=> array(7) { [0]=> int(39) [1]=> int(3) [2]=> int(32) [3]=> int(34) [4]=> int(43) [5]=> int(25) [6]=> int(37) } [4]=> array(7) { [0]=> int(41) [1]=> int(27) [2]=> int(18) [3]=> int(54) [4]=> int(8) [5]=> int(44) [6]=> int(4) } [5]=> array(7) { [0]=> int(10) [1]=> int(24) [2]=> int(49) [3]=> int(12) [4]=> int(57) [5]=> int(23) [6]=> int(59) } [6]=> array(7) { [0]=> int(36) [1]=> int(47) [2]=> int(19) [3]=> int(31) [4]=> int(13) [5]=> int(21) [6]=> int(46) } [7]=> array(7) { [0]=> int(48) [1]=> int(9) [2]=> int(29) [3]=> int(58) [4]=> int(60) [5]=> int(15) [6]=> int(38) } } http://forum.imasters.com.br/public/style_emoticons/default/seta.gif range() http://forum.imasters.com.br/public/style_emoticons/default/seta.gif shuffle() http://forum.imasters.com.br/public/style_emoticons/default/seta.gif array_splice() Compartilhar este post Link para o post Compartilhar em outros sites
tubadc 0 Denunciar post Postado Novembro 26, 2010 Resolvido! muito obrigado! Compartilhar este post Link para o post Compartilhar em outros sites