Você está na página 1de 5

Soma contínua em consultas, com eficiência https://www.usandoaccess.com.br/dicas/sorteio-lotofacil-lotomania-meg...

Usando Access
Home Vídeos Tutoriais Dicas Ribbons Suporte Downloads Contato Artigo

Sair do login Usuário: carlos josé

1 of 5 01/07/2020 14:23
Soma contínua em consultas, com eficiência https://www.usandoaccess.com.br/dicas/sorteio-lotofacil-lotomania-meg...

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é 10x 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


Testando a função:

2 of 5 01/07/2020 14:23
Soma contínua em consultas, com eficiência https://www.usandoaccess.com.br/dicas/sorteio-lotofacil-lotomania-meg...

'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

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

3 of 5 01/07/2020 14:23
Soma contínua em consultas, com eficiência https://www.usandoaccess.com.br/dicas/sorteio-lotofacil-lotomania-meg...

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 - Segurança máxima, usando o OPEN

Uma ajuda para quem está começando um negócio ou um projeto

Vídeo - Aprenda sobre filtragens

Adquira o kit UsandoAccess e aprenda em alta velocidade

Vídeo - Programação de relatórios - Parte 1

Desabilitando a faixa(ribbon) superior do Access

Integrando o Access com Servidor MySQL - Introdução

Como carregar o seu menu sem que ele vá para lista de suplementos

| Home | Vídeos | Tutoriais | Dicas | Ribbons | Suporte | Downloads | Contato | Artigo |

7 comentário(s)

Eduardo 01/04/2017 06:41:01

muito boa matéria!! parabéns !!! sucesso!!

Nélio 30/03/2017 08:37:04

Meus parabéns mestre, sou seu fã! Quando eu crescer quero ser assim!

Nick BEthencourt 30/03/2017 07:46:44

Avelino você é um cara inspirador!

MARCOS HENRIQUE 30/03/2017 05:55:46

Não consegui localizar o arquivo exemplo para realizar o Download.

pcnet 29/03/2017 13:16:02

4 of 5 01/07/2020 14:23
Soma contínua em consultas, com eficiência https://www.usandoaccess.com.br/dicas/sorteio-lotofacil-lotomania-meg...

Obrigado por partilhar o seu conhecimento.


O seu trabalho é notável!

Muitos parabéns e os maiores sucessos!

Gilson 29/03/2017 10:00:00

Muito bom. Excelente

Ricardo Abreu 29/03/2017 08:25:10

Excelente

Envie seu comentário:

Nome:

E-mail (não será exibido no comentário):

Comentário:

Digite o número quatrocentos e cinquenta e sete

comentar

© 1999 Pontocom Serviços Tecnológicos

5 of 5 01/07/2020 14:23

Você também pode gostar