Autor Tópico: Sistema de Sorteio  (Lida 3338 vezes)

ajritta

  • Full Member
  • ***
  • Mensagens: 202
  • Karma: +0/-0
  • A Paz do Eu
Sistema de Sorteio
« Online: Dezembro 06, 2011, 09:46:42 am »
Salve!
Amigos, estou tentando implementar um sistema de sorteio, porém com alguns quesitos diferentes.

Usei basicamente, o InitRandom() e Random(1,100) para sortear números entre 1 e 100.

A questão é a seguinte:
Gostaria de poder programar a quantidade de vezes que eu deseje que esse sorteio seja realizado e que os números sorteados que forem se repetindo, sejam armazenados e depois, ao final, seja informado quantas vezes um determinado número foi sorteado. Registrar esse processo para os primeiros 10 números, por exemplo.

Exemplo: Eu especifo que deve ser realizado 50 sorteios (pegando os números de 1 a 100, por exemplo), e o sistema deverá me dar um ranking dos 10 números que mais se repetiram nesses 50 sorteios. Informar o número sorteado e a quantidade de vezes que ele foi sorteado.

Existe uma forma de se fazer isso?

Desde já,
Agradeço a atenção de todos.
Alex.

zerloti

  • Jr. Member
  • **
  • Mensagens: 78
  • Karma: +0/-0
Re:Sistema de Sorteio
« Responder #1 Online: Dezembro 06, 2011, 06:02:10 pm »
Ola , fiquei na duvida se seria sorteado 10 numeros a cada sorteio é isso ? , caso contrario os 100 numeros terão o mesmo numero de sorteio ...
mas acredito que poderia resolver de 2 formas , através de uma matriz ou uma tabela (prefiro esta opção) , segue abaixo exemplo
que não foi validado ...


rank is int = 0
sorteio is int = 0
numero is int = 0
leumatriz is real = 0


// por matriz

MatCreate("matriz")
FOR sorteio = 1 TO 50 
    FOR rank  = 1 TO 10
      numero = Random(1,100)
      ResRead = MatRead("matriz", numero, 2)
      IF ERROR(MatError("matriz")) = 0 THEN
         MatWrite("matriz", MatRead("matriz", numero, 2) + 1, numero, 2)
      ELSE
         MatWrite("matriz", 1, numero, 2)
      END
   END
END

///por tabela

//tabela = sorteio
//campos = numerosorteado, qtsorteio
//chave = numerosorteado

FOR sorteio = 1 TO 50 
   FOR rank  = 1 TO 10
      numero = Random(1,100)
      HReadSeek(sorteio,numerosorteado,Numero,hIdentical)
      IF HFound(sorteio)
         sorteio.qtsorteio += 1
         HModify(sorteio)
      ELSE
         HReset(sorteio)
         sorteio.numerosorteado = numero
         sorteio.qtsorteio = 1
         HAdd(sorteio)
      END
   END
END

espero ter ajudado ...

ajritta

  • Full Member
  • ***
  • Mensagens: 202
  • Karma: +0/-0
  • A Paz do Eu
Re:Sistema de Sorteio
« Responder #2 Online: Dezembro 07, 2011, 10:28:29 am »
Bom dia.
Testei o código que você me passou, utilizando uma tabela.
É quase isso. Vou tentar me expressar melhor.
Deverá ser feito um sorteio entre os número 1 e 100.
Esse sorteio terá de se repetir 50 vezes.
No final, deverá ser mostrado apenas os 10 números mais sorteados, informando quantas vezes, cada um desses 10 números, foi sorteado.

No código atual, ele gera uma estatistica para os 100 números.

Desejo gerar, probabilidades de números que mais podem ser sorteados nesse intervalo.

Att,

zerloti

  • Jr. Member
  • **
  • Mensagens: 78
  • Karma: +0/-0
Re:Sistema de Sorteio
« Responder #3 Online: Dezembro 08, 2011, 08:46:18 am »
bom dia,
Certo , no caso eu só populei a tabela, mas ao final vc executa uma consulta na tabela por ordem decrescente de sorteio considerando os 10 primeiro registros , por isso eu indiquei o uso de tabela ao invéz de matriz , seria mais trabalhoso extrair o resultado com a matriz ...
exemplo;

SELECT TOP 10
  SORTEIO.NUMEROSORTEADO,
  SORTEIO.QTSORTEIO
FROM
  SORTEIO
ORDER BY
   QTSORTEIO DESC

espero ter ajudado ,
boa sorte ...

ajritta

  • Full Member
  • ***
  • Mensagens: 202
  • Karma: +0/-0
  • A Paz do Eu
Re:Sistema de Sorteio
« Responder #4 Online: Dezembro 08, 2011, 09:23:08 am »
Sem sombra de dúvidas Zerloti!
Ajudou e muito!!

Muito obrigado! Como essa codificação, já consigo implementar o que desejo.

Mais uma vez, muito obrigado.

Abraços,