Ir para conteúdo

POWERED BY:

Arquivado

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

*_Charles Potter_*

Geração de números

Recommended Posts

Bom Dia Gente

 

Estou com um projeto curioso onde preciso pegar 20 números que o cliente seleciona, e gerar 50 cominações aleatórios com os 20 números.

Alguem tem alguma dica?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Tarde Beraldo

 

Fiz alguns testes, consegui gerar combinações usando a class Math_Combinatorics

Porem preciso definir dois números fixos, conheces alguma forma?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para entender um pouco sobre permutações simples :seta: http://forum.imasters.com.br/topic/516058-como-gerar-todas-as-combinaes-possveis-e-gravar-no-banco-de-dados/#entry2049471

 

Testa aí!

<?php

/**
 * @staticvar array $result Armazena as combinações
 * @param array $array Os elementos para combinação
 * @param int $limit A quantidade máxima de elementos para combinar
 * @param int $max O limite máximo de combinações
 * @param int $key Variável auxiliar para gerar as combinações
 * @return array
 * @throws LengthException 
 */ 
function permutations( array $array, $limit = 20, $max = 50, $key = 0 )
{
    static $result;
    shuffle( $array );
    $count = count( $array );
    
    try
    {
	if( count( $result ) < $max )
	{
	        if( $count > $limit )
		{
			throw new LengthException( sprintf( 'Error!: Unable to generate permutations with more than %d values' , $limit ) );
		}
			
		if( $key == $count )
		{
			$result[ ] = $array;
		}
		else
		{
			for( $i = $key; $i < $count; $i++ )
			{
				list( $array[ $key ], $array[ $i ] ) = array( $array[ $i ], $array[ $key ] );
				permutations( $array, $limit, $max, $key + 1 );
			}
		}
	}	
	return $result;
    }
    catch( LengthException $e )
    {
        echo $e->getMessage( );
    }
}
 
echo '<pre>';
print_r( permutations( array( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 ) ) ); 

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.