Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

tubadc

[Resolvido] Gerar conjuntos de números que não se repitam

Recommended Posts

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

<?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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.