ANALISE COMBINATORIA PARA LOTERIAS

GOMESI 30/01/2011 21:51:42
#363830
Estou aprendendo VB só para Loteria. Alguém tem um fonte que gera combinações dentre um conjunto de números marcados em 60 da megasena?

Grato a todos
TECLA 30/01/2011 23:56:24
#363835
No alto desta página, tem uma caixa de texto voltada para o uso de pesquisas no site.
Digite a palavra LOTERIA, selecione ARQUIVOS e clique em PESQUISAR.
GOMESI 31/01/2011 10:32:22
#363860
Grato pelas dicas mas não consegui achar um programa fonte para gerar combinações a partir de um grupo de números...continuo no aguardo...quem puder postar as linhas aki no forum fico agradecido.
LLAIA 31/01/2011 21:51:37
#363964
cara, pra vc conseguir isso primeiro seria bom vc conversar com alguém de matemática pra determinar o método pra definir as dezenas. Pelas minhas contas são mais de 58.000.000. To enferrujado em matemática discreta. =P
FININHO 01/02/2011 00:29:45
#363972
Resposta escolhida
O código abaixo gera as combinações. Basta informa os numeros separados por [Ô],[Ô] na txtnumeros e a quantidade de elementos em cada combinação na txtelementos.

[ô]controles usados:
txtnumeros: coloca os numeros a serem combinados, separados por virgula.
txtelementos: informa a quantidade de elementos em cada combinação.
, command1: chama a função geraComb
list1: exibe as combinações

---------------------------------------------------------------------------------------

Dim matrizNum

Private Sub Command1_Click()
List1.Clear

matrizNum = Split(txtnumeros, [Ô],[Ô])
Call geraComb(UBound(matrizNum) + 1, CInt(txtelementos), 1, 1, [Ô][Ô])
MsgBox List1.ListCount
End Sub

Sub geraComb(totalNum As Integer, totalElementos As Integer, ElementoAtual As Integer, num As Integer, sequencia As String)
Dim seqTemp As String
Dim limiteElem As Integer

limiteElem = totalNum - (totalElementos - ElementoAtual)

For i = num To limiteElem
seqTemp = sequencia & Format(matrizNum(i - 1), [Ô]00[Ô])
If ElementoAtual < totalElementos Then
Call geraComb(totalNum, totalElementos, ElementoAtual + 1, i + 1, seqTemp & [Ô] - [Ô])
Else
List1.AddItem seqTemp
End If
Next i

End Sub
RODRIGOMARCHESE 01/02/2011 08:45:28
#363978
vai em Delphi: ANÁLISE COMBINATÓRIA

Function TfrmForm.Sorteio(InicioIntervalo, FimIntervalo, QuantosRetornos: Integer): String;
Var Retorno, SS: String;
Vetor : array of integer;
Valor, i, j, x : Integer;
Repetido : Boolean;
label volta;

function BuscaRND(vValor:Integer):Integer;
begin
Result := Random(vValor)
end;

Begin

//incrementa 1 ex: Ramdom(100) vai considerar 0 a 99
FimIntervalo := FimIntervalo + 1;

//redimensiona vetor para a quant. de retornos requerida
SetLength(Vetor, QuantosRetornos);

Randomize;

For i := 0 To QuantosRetornos - 1 Do Begin

Valor := 0;

volta: //foi achado repetido mais abaixo

//se retornou zero busca recursivamente até retornar > 0
repeat
Valor := BuscaRND(FimIntervalo);
until (Valor >= InicioIntervalo) and (Valor < FimIntervalo); //permanece na repetição até que a condição seja atendida

//vê se valor já existe no vetor
Repetido := False;
for j := 0 to QuantosRetornos - 1 do begin
if Vetor[j] = Valor then begin
Repetido := True;
break;
end;
end;

//se não é repedido insere no vetor
if (Valor >= 1) AND (Repetido = False) then
Vetor[i] := Valor
else
goto volta; //busca novo valor qdo repetido, sem sair da repetição i atual

End;

//ordena valores em ordem crescente
for i := Low(Vetor) to (High(Vetor)-1) do begin
for j := i + 1 to High(Vetor) do
begin
if Vetor[i] > Vetor[j] then
begin
x := Vetor[i];
Vetor[i] := Vetor[j];
Vetor[j] := x
end;
end;
end;

//lê vetor e concatena resultado para texto
for j := 0 to High(Vetor) do begin
Retorno := Retorno + IntToStr(Vetor[j]) + #13#10;
end;

Result := Retorno;
End;
LLAIA 01/02/2011 13:10:38
#364003
Testei o código do FININHO e tá muito bom. Código bem elegante por sinal.
GOMESI 01/02/2011 17:07:04
#364044
Valeu caras, vou ver se faço a coisa direito...Quanto ao amigo Leandro, na verdade o fechamento da mega fica em 50.063.860 jogos com 6
Tópico encerrado , respostas não são mais permitidas