• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

vince

[C] Gerador de chaves aleatórias do euromilhões

14 mensagens neste tópico

Programa (estúpido) que gera chaves aleatorias, e utiliza listas ligadas para guardar os números que vão sendo gerados.

#include<stdio.h>

typedef struct sList{
       int valor;
       struct sLint *seg;
       } *Lista;


int len(Lista l)
{
   if (!l) return  0;
   else return 1 + len(l->seg);
} 

void printL(Lista l)
{
   while(l){
   if (len(l)== 2){
                printf("+ ");
                printf("%d ", l-> valor);     
            }
         else   printf("%d ", l->valor); 
   l = l-> seg;
 }
}

Lista insere(Lista l, int x)
{
    Lista aux = malloc(sizeof(Lista));
    if(!l || (x <= l-> valor)){
          aux->valor = x;
          aux->seg = l;
          return aux; 
    }
    else{
      l->seg = insere (l->seg, x);
      return l;
 }         
}

Lista insereF(Lista l, int x)
{
     Lista a = malloc(sizeof(Lista));
     if(!l){
         a->valor = x;
         a->seg = NULL;
         return a;
         }
     else{
      l->seg = insereF(l->seg,x);
          return l;
  }
}


int member(int x, Lista l)
{
  if (!l) return 0;
  if (l-> valor == x) return 1;
  else return member(x,l->seg);

} 

Lista euroMilhoes()
{
     Lista aux = NULL;
     int i,x,k,s;
     int N = 5;
     srand(time(NULL));
     for(i=1; i<=N; i++){
              x = rand()%50 +1 ;
              if (! member(x, aux)) aux = insere(aux, x);
              else N++;
              }

     k = rand()%9 + 1;

     aux = insereF(aux, k);
     for(;{
         s =  rand()%9 + 1;
         if (s != k){
                  aux = insereF(aux, s);
                  return aux;
             }
         }   
     return aux;         

}               



int main()
{
   printL(euroMilhoes());
   getch();
   return 0;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem, eu ia jurar que ja tinha respondido a este post, mas aquí vai outra vez.

Era também muito interessante, um código para acertar na chave futura do euromilhões, acumulando dados do hsitórico do euromilhões e aplicando a teoria de probabilidade.

Ha uns anos atrás apareceram vários progs na net com isso... se calhar n deu muito efeito...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A probabilidade de sair uma dada chave não é influenciada por eventos passados. Ou seja, por muito histórico que tenhas a probabilidade de sair uma dada chave irá ser sempre a mesma.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A probabilidade de sair uma dada chave não é influenciada por eventos passados. Ou seja, por muito histórico que tenhas a probabilidade de sair uma dada chave irá ser sempre a mesma.

Ja estudei isso há muito tempo, mas teoricamente no limite os valores que saem vão sair em mesma quantidade não??

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se bem me embro isso chama-se FDP, lol, função densidade de probabilidade, e num caso como linar como o euromilhões que penso que seja, o gráfico desta função é um rectângulo, logo penso que se pode fazer essa estimativa ...??

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não, isso é um assunto totalmente diferente.

Euromilhões pode parecer muito complicado de ser vários números.

Caso simples - moeda ao ar.

Lanças a moeda ao ar 3 vezes, por incrível que pareça saíram as 3 vezes cara.

Vais lançar novamente ao ar a moeda. Qual a probabilidade de sair coroa?

50%, porque o lançamento da moeda não é influenciado pelos lançamentos anteriores, e é tão provável sair cara como coroa.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Hmm, isto se calhar devia tar na secção de mat...

Todas as teorias matemáticas têm de se manter, a função densidade de probabilidade é uma delas, no caso da moeda ao ar é um rectângulo

   

0,5    _______

          |      |    |

          |      |    |

          |      |    |

          |      |    |

          cara coroa

e isto acontece no limite....

se tiveres uma situação destas

0,6    ____

0,4    |      |___

          |      |    |

          |      |    |

          |      |    |

          |      |    |

          cara coroa

Como sabes que no limite se verifica a 1a situação sabes que obrigatoriamente têm que sair mais coroas do que caras.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já não me lembro muito bem, mas acho que estás a confundir as coisas.

Estás a pensar em esperança já do ramo da estatística, não em probabilidade.

Mandas 100 vezes a moeda ao ar, saiu sempre cara (é o fim do mundo...). O valor esperado será coroa. Mas probabilisticamente (esta palavra existe?) será igual, ou seja, 50% de sair cara e 50% sair coroa.

Ou desta forma. Lanças 3 vezes a moeda ao ar. Qual a probabilidade de sair cara nas 3 vezes?

Será de 1/2 * 1/2 * 1/2.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Betovsky olha para o número total de saídas do euromilhões ...

http://www.euromilhoes.com/estatisticas/?Section=EuroOcorrenciasNumeros

quando o número de sorteios tender para o infinito, as barras vão ser todas iguais, o que esta alí é um pouco semelhante à função desnidade de probabilidade.

Logo para as barras ficarem todas iguais ou no mínimo se aproximarem, vão sair mais vezes os valors que menos vezes saíram até ao momento, e é aí que se podem jogar com as probabilidades...

repara nas estrelas que saíram:

http://www.euromilhoes.com/estatisticas/?Section=EuroOcorrenciasEstrelas

como existem muito menos estrelas, este processo é mt mais rapido que na situação dos números, e aqui podes observar que as barras têm todas quase o mesmo tamanho.

PS: nunca joguei no euromilhões...lol ... mesmo com estas tretas todas é deitar dinheiro fora...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

LOL.... Isso é tipo assumir que os números que saem mais correspondem a bolas mais pesadas, ou assim.... lol

Se o jogo assumir esses contornos, o método vai ser revisto, porque eles têm que garantir aleatoriedade.....

Apesar dessa teoria... Este programa não armazena as chaves vencedoras, mas sim as apostas......

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Zzee não digo o contrário, mas o que estás a falar é da Esperança, que faz parte do ramo da Estatística, não é a Probabilidade.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

loool este tópico deu para rir um bocado...

A aplicação do grande teorema do equilíbrio das probabilidades (não existe) lol

O caso da moeda ao ar é um bom caso. Fizemos dez lançamentos, e saíram todos cara -> conclusão do zzee: têm que sair mais coroas agora -> errado

Vejamos porquê: neste momento tínhamos um desequilíbrio de 100% de caras e 0% de coroas. Vamos agora supôr que fazemos mais 999990 lançamentos. E que sai igual número de caras e de coroas nestes. Fizemos ao todo um milhão de lançamentos, caras: 500010 , coroas: 499990, em percentagem - caras: 50,001% coroas: 49,999%

Faz isto tender para infinito e tens a tua resposta. Qualquer que seja o desequilíbrio inicial de caras e coroas, ao tender para infinito, se após este período inicial sair um número igual de caras e de coroas então as percentagens de ambos vão tender para 50%. É apenas isto que dizem as probabilidades.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ainda estou a começar mas ao que sei não é possível criar um programa aleatório. Foi-me dito por um prof. que para simularmos um programa aleatório associamos ao nosso programa factores que não controlamos. Ex: criamos ciclos que iniciam com base num relógio, como as horas não se repetem o nosso ciclo não irá terminar sempre no mesmo número...

Se tivermos isto em mente, um programa para os números do euromilhoes é apenas uma maneira gira de não fecharmos os olhos e riscarmos 5 cruzes

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora