A ver a categoria “Jogos de Loto”

Categoria sobre tudo o que está relacionado com jogos de loto: software, estudos, teorias, casos engraçados, resultados bizarros.

Fórum euromilhoes.comEste post é uma reedição de outro post meu no euromilhoes.com.

Quando jogamos apostas múltiplas, ou desdobramentos completos, a quantidade e tipo de prémio recebido é bastante maior, e mais organizada, do que se jogássemos a mesma quantidade de apostas ao calhas. Sabemos isto intuitivamente; então, como saber que e quantos prémios teremos no caso de acertarmos uma quantidade arbitrária de números?

A SCML disponibiliza umas tabelas no seu portal de jogos (aqui para o Totoloto, não existe para o Euromilhões), mas, no caso de querermos fazer apostas diferentes dos casos previstos (com desdobramentos completos), é conveniente saber como calcular.

Para começar, e como aquecimento, vamos relembrar como são calculadas as múltiplas. Como todos os jogos a partir de agora têm dois sub-jogos (no caso do Euromilhões, são as estrelas, no novo Totoloto, o número da sorte), entremos logo em linha de conta com isso.

Na sequência deste post, várias pessoas1 chamaram-me a atenção de algo básico: faltava o valor das apostas na estrutura. Básico, básico, básico.

Podia ter cedido ao caminho mais fácil: apenas uma entidade, com o preço das apostas simples, devidamente localizado. Depois, calculava o valor das apostas múltiplas desdobrando cada múltipla nas suas componentes simples. Mas, quanto mais pensava no assunto, menos correcta me parecia a abordagem. Já ouvi falar de concursos – e não sei se é verdade – em que há vários tipos de apostas simples. Por exemplo, um concurso com três jogos, em que as pessoas escolhem (imaginemos) cinco números de um pote e um número de apenas um dos outros dois potes; há aqui duas apostas simples distintas: cinco do pote A mais um do pote B e cinco do pote A mais um do pote C. Outra razão que me surgiu depois, esta de ordem bem mais prática, seria o acesso directo, sem cálculos, aos preços das múltiplas, com o bónus de poder controlar que apostas são válidas, entre simples e múltiplas, para um dado concurso.

Como tal, o diagrama entidade-associação foi modificado e colocado no respectivo projecto da categoria Jogos de Loto. A imagem que acompanhava o post precedente a este foi retirada, para não existirem confusões e passa a estar só no projecto, que é bem melhor de gerir.

1 a razão pela qual as pessoas – pelo menos, estas quatro – preferem mandar um e-mail ao invés de comentar aqui no blog é algo que me ultrapassa…

Comentários Nenhum comentário Continuar a ler Continuar a ler »

Modelo de processo de desenvolvimento RAD (Rapid Application Development), fase 2: Modelagem dos Dados. É isto que nos ensinam na escola, desde o primeiro momento. E é isto que tantas vezes esquecemos no nosso dia-a-dia de programadores. Not this time.

Quando comecei a desenvolver aplicações para jogos de loto, estas eram extremamente restritivas, apenas para o Euromilhões ou apenas para o Totoloto… Qualquer outro concurso obrigaria a uma reestruturação do código e a uma nova release do software, exclusiva para esse concurso. Como é bom de ver, isso é um bocadinho estúpido – a menos que se tenha em mente uma estratégia de venda ou de branding: continua a ser estúpido dum ponto de vista de desenvolvimento, mas é uma excelente ideia a nível de marketing, sempre são mais produtos para vender. Como não é o meu caso, esqueçam: é só estúpido.

O código, passo a passo, foi sendo melhorado para ser escalável, como deveria ter sido desde o início. O mesmo foi acontecendo à estrutura de dados, abstraindo cada vez mais a mesma duma visão centrada num dado concurso, primeiro, e nos concursos portugueses, depois. Se do Euromilhões para o Totoloto, por exemplo, já há diferenças de estruturação (o Euromilhões é, na realidade, constituído por dois jogos, por exemplo), para totolotarias de outros países havia diferenças abismais. Por exemplo, há uma totolotaria nos Estados Unidos cuja última bola sorteada tem um significado especial e deve ser tratada como um jogo à parte, à semelhança das estrelas no nosso conhecido Euromilhões. Mas há um catch: essa bola é do mesmo pote de onde saíram as outras (cinco ou seis… ou sete, não sei bem). E isto, ainda a procissão vai no adro…

Para além das funções discutidas aqui e aqui, a classe estática CombTools ainda contém mais algumas funções para manipular combinações ou conjuntos de combinações. Relembro, mais uma vez, que a classe é estática (assim como todos os seus métodos).

Os métodos são os seguintes:

Este post é uma reedição de um post meu no euromilhoes.com.

Em primeiro lugar, o que é o CSN? O CSN é o Número Sequencial Combinatório (Combinatorial Sequence Number) de uma dada combinação, quando estas se encontram ordenadas lexicograficamente, isto é, tendo como exemplo C(50,5), da [1, 2, 3, 4, 5] até à [46, 47, 48, 49, 50]. Neste caso, os CSN’s seriam o 1 e o 2.118.760.

Uma forma de calcular os CSN’s, e vice-versa, seria simplesmente construir todo o desdobramento até ao CSN pretendido, ou até à chave pretendida. Don’t. É estúpido, é um desperdício de ciclos de processamento e é péssima programação. Sobretudo, se já alguém pensou no assunto e se os algoritmos são do domínio público. Mesmo que não saibam, pesquisem antes de cometer uma barbaridade deste tamanho.

Vamos então aos ditos…

Este post é uma reedição de um post meu no euromilhoes.com.

A forma habitual de calcular combinações, que nos ensinaram na escola, é a seguinte:

formula_combinacoes

No entanto, calcular desta forma numa aplicação informática levanta desde logo dois problemas:

  1. A maior parte das linguagens de programação não tem uma função para calcular factoriais, embora seja muito fácil fazer uma, simplística, é certo, de forma recursiva:
    função factorial(n)
        devolve (n * factorial(n - 1));
    fim de função factorial
  2. Mesmo os mais modestos factoriais atingem rapidamente o limite dos inteiros em linguagens strongly typed (isto é, quase todas as linguagens desktop, e mesmo algumas web). Por exemplo, usando Int32, o limite é 2.147.483.647, ou 4.294.967.295 (sem sinal); o reles 13! já rebenta com qualquer um deles. OK, podíamos usar inteiros de 64 bits, afinal, quase todos os processadores actuais são de 64 bits (mas o sistema operativo também tem que ser, não se esqueçam); ficávamos com limites de 9.223.372.036.854.780.000 ou 18.446.744.073.709.600.000 (sem sinal). Pois, mas basta um 21! para ficarmos logo sem pé outra vez.

Posto isto, que fazer?

Este post é uma reedição de um post meu no euromilhoes.com.

Antes de se avançar para qualquer estudo estatístico em totolotarias, é conveniente termos a noção de qual é a probabilidade de acertarmos com um dado conjunto de números. Só assim é possível aferir a fiabilidade de um conjunto de filtros, ou uma metodologia de escolha de números e/ou filtros, por via da sua aplicação ao historial do concurso. É claro para toda a gente que, se uma dada metodologia tem resultados inferiores ou sensivelmente iguais à probabilidade natural dum conjunto de números de igual tamanho, essa metodologia está desafinada ou é uma treta (ou ambas).

Por esse motivo, fiz este estudo em Novembro de 2006 para o Euromilhões (números e estrelas) e para o totoloto. A primeira coluna das tabelas é a quantidade de números escolhida e a primeira fila é a quantidade de acertos. Nas tabelas onde essa primeira fila é 1, 2, 3, etc., a probabilidade é calculada para exactamente esses acertos, nem mais, nem menos; Nas tabelas onde a primeira fila é 1+, 2+, 3+, etc., a probabilidade é calculada para pelo menos esses acertos (1 ou mais, 2 ou mais, etc.).

Ver-me-ão falar muito sobre jogos de loto (euromilhões, totoloto, etc.) por aqui, pelo que é conveniente terem a noção da minha posição base sobre os mesmos.

Os três pontos fundamentais da minha posição são os seguintes:

  1. Os sorteios são aleatórios. Penso que ninguém poderá colocar em causa esta afirmação, sob pena de ensandecer rapidamente. Ou acreditamos que os sorteios não são, de alguma forma, manipulados, ou deixamos, pura e simplesmente, de jogar (e de sair à rua também, com medo dos homens de negro ou, pelo menos, com medo do ministro Santos Silva);
  2. Prever os X números sorteados é impossível. Ponto final. Cada sorteio é independente e aleatório e, como em todos os acontecimentos aleatórios, não tem memória dos acontecimentos passados. É perfeitamente possível sair a mesma chave duas semanas consecutivas, tal como aconteceu recentemente na Bulgária (foi ordenada uma investigação, que entretanto já concluiu que não houve fraude);
  3. A única maneira de garantir um dado prémio é esgotando o respectivo espaço combinatórico. Isto é, para garantir em absoluto um 6 no totoloto é necessário jogar com as 13.983.816 chaves.

Esta minha visão centra-se no conceito probabilístico das totolotarias; penso que não seja surpresa para nenhum apostador, regular ou não, que a house edge das totolotarias é brutal. No entanto, o estudo estatístico de qualquer acontecimento aleatório, e de totolotarias em particular, mostra-nos algumas características que podemos fazer jogar a nosso favor. Por exemplo, estatísticamente, qualquer acontecimento aleatório tende para o equilíbrio. É fácil fazer esta verificação com um dado, ou com uma moeda: se se lançar uma quantidade elevada de vezes, cada uma das faces terá saído, sensivelmente, em igual número.

 Categorias
 Arquivo
 Projectos em Destaque
 Últimas Postas no Blog
 Últimos Comentários do Blog