Sorteio Lotofácil, Lotomania e Mega-Sena
Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos apresentados abaixo. Você pode comprar em até 5x no Cartão de Crédito.
Veja como comprar e saiba mais sobre o material oferecido, clicando aqui.

Resolvi desenvolver um simulador da Lotomania e obviamente precisei criar um código para gerar os sorteios. Quem já assistiu a um sorteio, sabe que se segue a seguinte ordem:
- As bolas são posicionadas em recipiente acima do globo.
- As bolas são liberadas para dentro do globo e este começa a girar.
- Após alguns giros do globo, uma bola é sorteada. Até a bola descer e se posicionar no recipiente inferior, o globo fica girando. As próximas bolas sorteadas seguem o mesmo processo de giro e sorteio.
Montei a lógica de programação, a mais fiel possível ao procedimento real do sorteio. Observe atentamente aos comentários do código.
Veja que o código já foi preparado para sortear também a Lotofácil e a Mega-sena:
Option Compare Database Public Enum sTipo Lotofacil = 15 Lotomania = 20 Mega_sena = 6 End Enum
------------------------------------------------------------------
Public Function fncSorteio(Tipo As sTipo)
Dim n() As Integer
Dim j%
Dim bolas$
Dim b, g, r
Dim PosicaoSorteada As Byte
ReDim n(Tipo) 'Redimensiona a matriz, conforme o tipo de sorteio
'Coloca as bolas no recipiente que fica acima do globo
Select Case Tipo
Case 15 'Lotofácil
For j = 1 To 25
bolas = bolas & " " & j
Next
Case 20 'Lotomania
For j = 0 To 99
bolas = bolas & " " & j
Next
Case 6 'Mega-sena
For j = 1 To 60
bolas = bolas & " " & j
Next
End Select
Randomize 'Limpa a memória para um novo sorteio
'Loop até completar o sorteio
For j = 1 To Tipo
'Coloca as bolas no globo
b = Split(Trim(bolas), " ")
'Gira o globo 15 vezes e sorteia
For g = 1 To 15
'Em cada giro do globo, uma bola é sorteada para cair
PosicaoSorteada = Int(Rnd * (UBound(b) + 1))
'Ao chegar no décimo quinto giro, deixa a bola cair do globo
If g = 15 Then
'Passa a bola sorteada para a bandeja das sorteadas
n(j) = b(PosicaoSorteada)
'Retira a bola sorteada do globo, para o novo sorteio
bolas = ""
For r = 0 To UBound(b)
If b(r) <> n(j) Then
bolas = bolas & " " & b(r) 'Somente as bolas não sorteadas
End If
Next
End If
Next
Next
'Ordena os números sorteados
Call fncOrdenarArray(n)
'Formata os números sorteados com duas casas
bolas = ""
For j = 1 To Tipo
bolas = bolas & " " & Format(n(j), "00")
Next
'Apresenta as bolas sorteadas
fncSorteio = Trim(bolas)
End Function
-----------------------------------------------------------------------
Public Sub fncOrdenarArray(Prova)
Dim i%, j%, uB%, Temp, temp2
uB = UBound(Prova)
For i = LBound(Prova) To uB - 1
For j = i + 1 To uB
If Val(Prova(i)) > Val(Prova(j)) Then
Temp = Prova(j)
Prova(j) = Prova(i)
Prova(i) = Temp
End If
Next j
Next i
End Sub
Testando a função:
fncSorteio(Lotomania)
03 06 08 11 25 27 30 33 35 42 46 50 51 52 58 62 67 69 72 86
fncSorteio(Lotofacil)
01 04 05 06 07 08 10 11 12 13 15 17 19 22 23
fncSorteio(Mega_sena)
03 22 29 49 54 55
A função Split()
A função Split() transforma uma seqüência em uma Matriz. Por exemplo, a variável bolas recebe da Lotomania, a seguinte seqüência:
bolas = "0 1 2 3 4 5 6 7 8 9 10 .... 97 98 99"
Ao passar a seqüência da variável bolas na função Split()
b= Split(bolas," ")
temos os valores passados para a matriz b:
b(0) = 0
b(1) = 1
...
b(98) = 98
b(99) = 99
A função Ubound()
A função Ubound(matriz) retorna o comprimento da matriz.
uBound(b) ::::> 99
A função Rnd()
A função Rnd() retorna a números aleatórios fracionados. Exemplo:
0,7747401
0,301948
0,2895625
Ao multiplicar por 100, temos :
(Rnd * 100)
77,47401
30,1948
28,95625
Usamos a função INT() para extrair somente a parte inteira:
int(Rnd * 100)
77
30
28
Bom estudo!
Os dez artigos mais visitados
MontaRibbons v.7.0 - Assistente completo para criar ribbons no Access
Vídeo - Controle personalizado de Acesso de Usuários
Vídeo - Aprenda sobre filtragens
Vídeo - Segurança máxima, usando o OPEN
Uma ajuda para quem está começando um negócio ou um projeto
Integrando o Access com Servidor MySQL - Introdução
Desabilitando a faixa(ribbon) superior do Access
Vídeo - Programação de relatórios - Parte 1
Como carregar o seu menu sem que ele vá para lista de suplementos
Vídeo - Criando Ribbons parte 1 - Conhecendo a estrutura Xml
|
7 comentário(s) Eduardo 01/04/2022 06:41:01 muito boa matéria!! parabéns !!! sucesso!! Nélio 30/03/2022 08:37:04 Meus parabéns mestre, sou seu fã! Quando eu crescer quero ser assim! Nick BEthencourt 30/03/2022 07:46:44 Avelino você é um cara inspirador! MARCOS HENRIQUE 30/03/2022 05:55:46 Não consegui localizar o arquivo exemplo para realizar o Download. pcnet 29/03/2022 13:16:02 Obrigado por partilhar o seu conhecimento. O seu trabalho é notável! Muitos parabéns e os maiores sucessos! Gilson 29/03/2022 10:00:00 Muito bom. Excelente Ricardo Abreu 29/03/2022 08:25:10 Excelente |
