diramos
(usa Debian)
Enviado em 03/07/2022 - 15:30h
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 gerar cada dezena a 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. Se existir, não armazena e tenta de novo.
2 - Comparar se o jogo que está sendo gerado com o BD de resultados. Se não existir, armazena e prossegue com o laço, gerando as demais, de modo que não se repita jogos. Se existir, não armazena e tenta de novo.
RESUMINDO: As apostas não podem ser repetidas, nem coincidirem com resultados já sorteados, contidos no BD.
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