O projeto utiliza a função random() para sortear números de acordo com cada tipo de loteria.
MEGA-SENA:
São sorteados 6 números entre 1 e 60.
DUPLA SENA:
São sorteados 6 números entre 1 e 60.
QUINA:
São sorteados 5 números entre 1 e 80.
LOTOFÁCIL:
São sorteados 15 números entre 1 e 25.
LOTOMANIA:
São sorteados 50 números entre 0 e 99.
A lógica do programa é gerar quantos números aleatórios forem necessários para cada loteria, entre o mínimo e o máximo, verificando se o número ainda não foi sorteado.
Os valores são exibidos através da comunicação serial:
A função random() é muito útil e pode ser utilizada em diversas situações.
Sintaxe:
random(valorMáximo);
ou
random(valorMínimo, valorMáximo);
O valor mínimo é opcional e, quando não declarado é considerado o valor 0.
O valor máximo é exclusivo, sendo considerado valorMáximo - 1.
Exemplos:
int x = random(10); //x receberá um valor de 0 a 9. int y = random(2, 10); //y receberá um valor de 2 a 9.
Para ver todos os projetos com a função, use a busca pelo marcador Random.
Referências:
http://www.loterias.caixa.gov.br/
https://www.arduino.cc/reference/pt/language/functions/random-numbers/random/
https://www.arduino.cc/reference/pt/language/functions/random-numbers/randomseed/
Segue o código fonte:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | /*--------------------------------------------------------- Programa : LOTERIAS (SORTEIO) Autor : Fellipe Couto [ http://www.efeitonerd.com.br ] Data : 09/07/2019 ---------------------------------------------------------*/ #define MEGASENA_MIN 1 #define MEGASENA_MAX 60 #define MEGASENA_QTD 6 #define DUPLASENA_MIN 1 #define DUPLASENA_MAX 50 #define DUPLASENA_QTD 6 #define LOTOFACIL_MIN 1 #define LOTOFACIL_MAX 25 #define LOTOFACIL_QTD 15 #define QUINA_MIN 1 #define QUINA_MAX 80 #define QUINA_QTD 5 #define LOTOMANIA_MIN 0 #define LOTOMANIA_MAX 99 #define LOTOMANIA_QTD 50 #define QTD_MAX 50 int numbers[QTD_MAX]; void setup() { //Inicia a serial Serial.begin(9600); delay(1000); //Efetua os sorteios Serial.println("\n\n\n\tLOTOFACIL\nSorteados:"); Lottery(LOTOFACIL_MIN, LOTOFACIL_MAX, LOTOFACIL_QTD); ShowNumbers(LOTOFACIL_QTD); Serial.println("\n\n\n\tMEGA-SENA\nSorteados:"); Lottery(MEGASENA_MIN, MEGASENA_MAX, MEGASENA_QTD); ShowNumbers(MEGASENA_QTD); Serial.println("\n\n\n\tDUPLA-SENA\nSorteados:"); Lottery(DUPLASENA_MIN, DUPLASENA_MAX, DUPLASENA_QTD); ShowNumbers(DUPLASENA_QTD); Serial.println("\n\n\n\tQUINA\nSorteados:"); Lottery(QUINA_MIN, QUINA_MAX, QUINA_QTD); ShowNumbers(QUINA_QTD); Serial.println("\n\n\n\tLOTOMANIA\nSorteados:"); Lottery(LOTOMANIA_MIN, LOTOMANIA_MAX, LOTOMANIA_QTD); ShowNumbers(LOTOMANIA_QTD); } void loop() {} void Lottery(int numMin, int numMax, int qtdNum) { //Limpa o array for (int i = 0; i < QTD_MAX; i++) { numbers[i] = 0; } //Para o random não repetir sequencias randomSeed(analogRead(0) + millis()); //Loop para sortear a quantidade de números (qtdNum) for (int rdm = 0; rdm < qtdNum; rdm++) { bool newNumber = false; //Loop enquanto a variável estiver em false while (newNumber == false) { //Efetua o sorteio de um numero de 1 a numMax int numLottery = random(numMin, numMax + 1); //Verifica em todas as posições do array se já existe o número bool numIncluded = false; for (int i = 0; i < 15; i++) { if (numbers[i] == numLottery) { numIncluded = true; break; //Finaliza o loop caso o número já exista no array } } //O número ainda não foi sorteado if (numIncluded == false) { newNumber = true; //Seta a variável para sair do loop numbers[rdm] = numLottery; //Atribui o número sorteado a posição do array } } } } void ShowNumbers(int qtdNum) { for (int i = 0; i < qtdNum; i++) { Serial.print(numbers[i]); Serial.print(" "); if (i == 24)Serial.println(); delay(100); } } |
Nenhum comentário:
Postar um comentário