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 |