shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script-pt] Gerar numeros aleatórios e comparar com BD


From: Robson Alexandre
Subject: Re: [shell-script-pt] Gerar numeros aleatórios e comparar com BD
Date: Sun, 3 Jul 2022 13:18:09 -0300

Prezado Dito,

para verificar se a string aleatória gerada já existe na sua base de dados você precisa gerar todas as combinações possíveis com as quantidades de dezenas geradas de 6 em 6, visto que sua base de dados os resultados são 6 dezenas. Depois disso seria realizar um grep -f DB < COMBINAÇÕES pra saber se o resultado gerado já existe na base de dados.
Vamos a um exemplo, considerando que sua base de dados esteja em ordem crescente e a string gerada também
Gerando quantidade de dezenas maior do que 6, será necessário analisar todas as combinações possíveis:
7 dezenas: 01 02 03 04 05 06 07
Combinações:
01 02 03 04 05 06
01 02 03 04 05 07
01 02 03 04 06 07
01 02 03 05 06 07
e assim por diante...


Atenciosamente,

Robson Alexandre

Em sáb., 2 de jul. de 2022 às 14:54, Dito Ramos <diramos@uol.com.br> escreveu:
Mestres, boa tarde.
Fiz um script em bash para gerar números aleatórios, para aposta na megasena.
Ex. de uso:

#./gerajogos.sh 3 6, onde $1 é a qtd de jogos e $2 a qtde de dezenas.

Ex. saida:

14 17 23 39 57 58
02 16 24 38 49 56
03 15 26 36 37 41

O resultado é gravado no arquivo jogos.tx

Tenho um BD atualizado, tipo .txt com todos os resultados dos sorteios até agora, no seguinte formato:

1 - 11/03/1996 - 04 05 30 33 41 52 - 0,00 - 0
2 - 18/03/1996 - 09 37 39 41 43 49 - 2.307.162,23 - 1
3 - 25/03/1996 - 10 11 29 30 36 47 - 391.192,51 - 2
...
...
2494 - 25/06/2022 - 01 04 10 22 53 54 - 78.763.087,85 - 1
2495 - 28/06/2022 - 08 12 14 30 33 41 - 0,00 - 0

Onde as dezenas sorteadas dos prêmios estão no campo 3 da tabela.

Pois bem. Preciso da ajuda dos mestres para o seguinte:
No script que gera os jogos aleatórios, incluir as seguintes condições:
1 - Quando gera as dezenas para aposta, verificar se cada uma já existe na relação que está sendo gerada. Se não existir, armazena e prossegue com o laço, gerando as demais, de modo que não se repita jogos.
2 - Comparar se o jogo que está sendo gerado com o BD de resultados. Em caso de existir Se não existir, armazena e prossegue com o laço, gerando as demais, de modo que não se repita jogos.

RESUMINDO: Os jogos não podem ser repetidos, nem coincidirem com resultado já sorteado.
Já tentei de tudo aqui, mas não cheguei a uma solução.

Segue o script gerajogos.sh para avaliação.

Grato desde já.

#!/bin/bash
rm jogosformatado.txt jogosformatado1.txt jogos.txt
qtdjogos=$1
qtddezenas=$2
metadeqtddezenas=$(echo "$qtddezenas"/2 | bc)
dezezenasasereremexcluidas=$(shuf -i 1-$qtddezenas -n 1)
n=1
while (( $n <= $qtdjogos ))
do
        if [ $n -lt 10 ]
                then
                echo -n "Jogo "0"$n: "
        else
                echo -n "Jogo $n: "     
        fi
        n=$(( n+1 ))
        jogos1a30=$(shuf -i 1-30 -n $metadeqtddezenas | tr -d ',e' | tr -s ' ' | sed 's/ / \n/g' | sort -n | while read a; do printf '%02d ' $a ; done)
        jogos31a60=$(shuf -i 31-60 -n $metadeqtddezenas | tr -d ',e' | tr -s ' ' | sed 's/ / \n/g' | sort -n | while read a; do printf '%02d ' $a ; done)
        echo $jogos1a30 $jogos31a60
        done >> jogosformatado.txt
        cat jogosformatado.txt | awk '{$1="";$2=""; print $0}' | sed 's/^ \+//' > jogosformatado1.txt
        cp jogosformatado1.txt jogos.txt
        chown www-data jogos.txt
        chgrp www-data jogos.txt
        cat jogos.txt

_______________________________________________
Lista brasileira de usuários de shell script
Endereço de e-mail da lista: shell-script-pt@nongnu.org
Para se inscrever ou desinscrever acesse: https://lists.nongnu.org/mailman/listinfo/shell-script-pt
Para ver os arquivos da lista (mensagens anteriores) e pesquisar nelas, acesse https://lists.nongnu.org/archive/html/shell-script-pt/

NOTA: A lista anterior, no Yahoo Groups, foi *desativada*. Por favor utilize somente esta.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]