Criando um gerador de números para Mega-Sena em PHP

Publicado por João Cagnoni em 26/09/2009

[ Hits: 18.917 ]

 


Criando um gerador de números para Mega-Sena em PHP



Na hora de fazer nossos joguinhos de mega-sena sempre vem a dúvida: qual número devo jogar?

Foi pensando nisso que criei esta humilde rotina para geração de um simples conjunto de 6 números para jogar na mega-sena. O foco desta dica é ajudar os iniciantes em PHP, e lembre-se que este script não faz MILAGRE, então cuidado para não viciar.

Com este script ganhei a quadra da mega-sena, o que me rendeu R$430,00.

Uma dica pessoal: jogue sempre com o mesmo número, suas chances serão bem maiores.

<?php
# Gera os 6 números
for ($i = 1; $i <= 6; $i++) { $n[] = str_pad(rand(1, 60), 2, '0', STR_PAD_LEFT); }

# Ordena os números
sort($n);

# Exibe os números
echo implode(' - ', $n);
?>

Exemplo de resultado: 01 - 28 - 36 - 40 - 45 - 57

E a explicação:

# Gera os 6 números
Aqui ele realiza um loop para 6 números, cria uma chave em uma array para cada número ( $n[] ), gera o número ( rand() ) e adiciona um "0" ao lado esquerdo do número caso ele tenha apenas um dígito, ou seja, "3" ficará "03". Frescura mesmo.

# Ordena os números
Como o próprio comentário diz, ordena em ordem crescente os números que foram gerados.

# Exibe os números
Aqui eu chamo a função implode() para separar com " - " os números, e já coloquei dentro do echo para exibí-los na tela.

O único problema que ainda estou enfrentando é criar uma rotina decente para verificar se um número foi gerado duas ou mais vezes. Pretendo usar a função array_search() para isso, mas ainda não cheguei a uma conclusão sobre como implementar ela sem "sujar" este código tão limpinho.

Boa sorte, até a próxima!

Outras dicas deste autor

Flash Player 64 bits disponível

Leitura recomendada

register_globals e $_REQUEST

Três novos módulos para Joomla 1.5

Cursos gratuitos online de PHP orientado a objetos

Armazenar e compartilhar códigos em diversas linguagens

Ícones livres para sistemas web

  

Comentários
[1] Comentário enviado por dbahiaz em 27/09/2009 - 00:00h

Quando ganhar a sena compartilha com agente o premio rsssssss. Brincadeira.

Tem com explicar para um leigo como eu, como compilar isso a, se não for muito complicado, obrigado!

[2] Comentário enviado por annakamilla em 27/09/2009 - 02:05h

tem que ter servido apache para isso, dbahiaz

[3] Comentário enviado por joaocagnoni em 27/09/2009 - 08:35h

O PHP é uma linguagem interpretada, então não é necessário compilar.

[4] Comentário enviado por dbahiaz em 27/09/2009 - 11:49h

Talvez não tenha feito a pergunta com claresa, vc colocou um script, e para um leigo é somente um monte de letras e tals, sei que o intuito da dica não foi para uma pessoa leiga em PHP, por isso, queria saber a rotina de execução desse script, se for algo complicado, não precisa se incomodar, quando tiver um tempinho eu vou pesquisar como rodar isso aqui e testar.

Mais valeu!

Ps: Anna depois ti pertubo no mensager rss.

[5] Comentário enviado por joaocagnoni em 18/11/2009 - 10:08h

Bom, talvez eu tenha esquecido de explicar um pouco sobre as funções que usei, então aqui vai um breve resumo:

str_pad() - Serve para completar algo com dígitos na esquerda, direita ou ambos os lados. Neste caso serve para transformar, por exemplo, os números 2 em 02, 7 em 07, e etc.

sort() - Ordena em ordem alfabética/crescente uma array.

implode() - Imprime os valores de uma array separando-as por alguma string. Por exemplo, se tivermos uma array [2, 4, 6] e usarmos um implode('-', $array), o resultado será 2-4-6.

[6] Comentário enviado por gabrielaragao em 13/10/2014 - 11:24h

Olá, pessoal!
Sei que esse tópico é "um pouco" antigo, mas eu tenho uma dúvida.
Sou iniciante e PHP e gostaria de saber o que eu posso usar para destinguir, por opção, quantos números serão gerados.
Por exemplo: por padrão está para ser gerado 6 números. E se eu quiser que sejam 5? Eu não gostaria de ter de trocar no código, e sim ter uma opção pra isso.

Alguém pode ajudar?

[7] Comentário enviado por joaocagnoni em 13/10/2014 - 11:31h

Gabriel, fique tranquilo... Mesmo após 5 anos nunca abandonei o Viva o Linux!

Para controlar dinamicamente a quantidade de números, você pode alterar o for ($i = 1; $i <= 6; $i++) para for ($i = 1; $i <= $_GET['quantidade']; $i++), assim quando você acessar a url http://localhost/teste.php?quantidade=5, o sistema gerará 5 números. Caso você queira rodar este script via linha de comando, poderá usar for ($i = 1; $i <= $argv[1]; $i++). Exemplo: php teste.php 5

Espero ter sido útil.

[8] Comentário enviado por gabrielaragao em 13/10/2014 - 13:35h

Obrigado pela ajuda, joaocagnoni. Isso me esclareceu bastante.

Mas no caso de haver um campo para preecher, tem como eu pegar a informação desse campo para gerar?
Se não for de mais, e no caso de eu querer gerar mais de uma linha de números?

Exemplo: 3 jogos de 5 números e ele retorna:

15 – 15 – 40 – 49 – 54
05 – 31 – 36 – 40 – 45
24 – 30 – 50 – 53 – 58

Muitíssimo obrigado! ;)

[9] Comentário enviado por papitoerickson em 03/08/2015 - 23:02h

Boa noite pessoal, sei que o post é antigo, mas o único que achei, parecido com o meu

criei um script parecido, com todas as funções,inclusive, gerar quantidade de jogos, quantidade de números e remover números repetidos,

eu disponibilizo-o em um site para as pessoas conhecidas jogarem.

ai que pintou um problema, várias pessoas sugeriram colocar um campo, onde eles pudessem remover alguns números do sorteio, pois então tentei fazer de inúmeras vezes sem sucesso;

seria possível criar um criar um array onde os valores seriam preenchido por um campo no formulário html
por exemplo, os valores que os internautas quiserem ignorar... de 1 a 60... num jogo de 6 números...

no input html => "01,25,30,45"

consegui remover, utilizando, o array_search(), onde se localizado o valor a ser ignorado, utilizando em seguida a unset(), mas o valor onde era pra ser impresso numero ignorado fica vago vazio, ao invés de imprimir 6 números por jogo, ele imprime 5, alguma solução para esse problema?

onde esses valores poderiam ser substituídos por outros até fechar a casa da quantidade de 6 números?

Obrigado pela atenção!



Contribuir com comentário