Ir para conteúdo

POWERED BY:

Arquivado

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

CrazyLOL

Sequencia sem repetir

Recommended Posts

Galera to querendo criar uma sequencia de 4 numeros aleatórias de uma lista, porém não poderia repetir.

 

Exemplo tenho a lista de numeros: 25,16,20,14

 

através dessa ela gerar outras sequencias exemplo: 14,25,20,16 mas sem repetir a sequencia...

 

Como poderia fazer isso?

 

att,

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?php
$QuantNumeros = 40;
$NumAtual = 1;
$NumUtilizados = array();

while($NumAtual <= $QuantNumeros)
{
$NumG = rand(0,99);

if(!in_array($NumG,$NumUtilizados))
{
	array_push($NumUtilizados,$NumG);
	echo $NumG."<br>";
	$NumAtual++;
}
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existe algumas maneiras bem garantidas de não repetir, a mais básica, é criar uma lista de opções, e remover os números já selecionados.

 

$array = [1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10];
shuffle($array);

echo 'primeiro sorteio:<br />';
for($i = 1 ; $i <= 4 ; $i++) {
echo $i.'º: '.array_shift($array).'<br />';	
}

echo 'segundo sorteio:<br />';
for($i = 1 ; $i <= 4 ; $i++) {
echo $i.'º: '.array_shift($array).'<br />';	
}

 

Saída:

primeiro sorteio:

1º: 8

2º: 9

3º: 2

4º: 10

 

segundo sorteio:

1º: 3

2º: 7

3º: 4

4º: 1

 

Teste do código: http://codepad.viper-7.com/JNHEkg

 

Caso você possua os número salvo de outra maneira, você remover eles do vetor de sorteio:

$array = [1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10];
$arraySelecionados = [4 , 8 , 3 , 10];
$array = array_diff($array , $arraySelecionados);
shuffle($array);

echo 'sorteio:<br />';
for($i = 1 ; $i <= 4 ; $i++) {
echo $i.'º: '.array_shift($array).'<br />';	
}

 

Saída:

sorteio:

1º: 5

2º: 1

3º: 2

4º: 9

 

Teste do código: http://codepad.viper-7.com/hWo4iC

Compartilhar este post


Link para o post
Compartilhar em outros sites

OBrigado galera, porém como disse eu tenho já alguns numeros definidos e atraves dele gostaria de gerar uma nova sequencia...

 

no caso tenho esses numeros 25,16,20,14,65,96,33 nessa sequencia, porém queria uma nova sequencia com apenas 4 numeros usando esses numeros que já possuo, e o detalhe é que não pode repetir.

A parte de gerar os numeros até está tranquilo o negocio está sendo a forma para não repetir os numeros sorteados...

Compartilhar este post


Link para o post
Compartilhar em outros sites

desculpe, não havia entendido corretamente

 

<?php
$QuantNumeros = 4;
$NumAtual = 1;
$NumUtilizados = array();
$PreNum = array(25,16,20,14,65,96,33);

while($NumAtual <= $QuantNumeros)
{
   	$NumG = rand(0,6);
   	if(!in_array($PreNum[$NumG],$NumUtilizados))
   	{
           	array_push($NumUtilizados,$PreNum[$NumG]);
           	echo $PreNum[$NumG]."<br>";
           	$NumAtual++;
   	}
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Leia novamente o #4. Lá está explicado.

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.