Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Não entendi o "19"

Pessoal, eu entendi o conceito de seed, e de pseudo-aleatório, mas não entendio a lógica para chegar ao resultado. Por exemplo, usando seed em 100, o resultado é 19. Usando em 101, o resultado é 75. 102, também é 19. 103 é 92...

Essa lógica eu não entendi. Como o python chega nesse "resultado"? Se eu quiser que o resultado seja, sei lá, 36, por exempo...qual será o seed?

1 resposta
solução!

Olá Rafael, como você está?

A geração de números aleatórios em Python é feita usando algoritmos matemáticos que que aplicam uma série de operações para gerar números aaparentemente aleatórios. Quando você usa a mesma semente (seed) para inicializar o gerador de números aleatórios, o algoritmo gera a mesma sequência de números aleatórios toda vez que é executado. Isso é útil para testes e experimentos, pois permite reproduzir resultados precisos.

A semente pode ser escolhida pela pessoa programadora ou pode ser gerada automaticamente pelo sistema operacional ou pelo próprio Python, com base em fatores como a hora atual do sistema ou outros valores do sistema.

No Python, o módulo random implementa um gerador de números pseudo-aleatórios baseado em congruência linear. Quando você define uma semente usando a função random.seed(), o gerador inicia a sequência a partir desse valor e gera os próximos números da sequência a partir dele.

Indo além, a fórmula matemática usada pelo algoritmo de geração de números aleatórios é determinística, o que significa que sempre produzirá o mesmo resultado para uma determinada semente. Portanto, se você quiser gerar o número 36, precisará tentar diferentes sementes até encontrar uma que produza esse número e podemos fazer isto com o código abaixo:

import random

# Loop para testar diferentes sementes
for i in range(1000):
    # Define a semente para a iteração atual
    random.seed(i)

    # Gera um número aleatório
    num = random.randint(1, 100)

    # Verifica se o número é 36
    if num == 36:
        print(f"Semente encontrada: {i}")

Resultado

Semente encontrada: 73
Semente encontrada: 109
Semente encontrada: 124
Semente encontrada: 184
Semente encontrada: 208
Semente encontrada: 232
Semente encontrada: 321
Semente encontrada: 448
Semente encontrada: 613
Semente encontrada: 719
Semente encontrada: 766

Para conferir o resultado sendo igual a 36, segue o código abaixo:

random.seed(73)
print(random.randint(1, 100))

Resultado

36

Este código testará 1000 sementes diferentes e imprimirá a semente que produz o número 36. Observe que a probabilidade de qualquer semente produzir o número 36 é muito baixa, então pode ser necessário testar muitas sementes diferentes antes de encontrar uma que funcione.

Por fim, vale ressaltar que a geração de números aleatórios é um tópico complexo, e há muitos fatores a serem considerados. Em situações que requerem alta segurança ou precisão científica, é necessário usar métodos especiais para gerar aleatoriedade.

Caso queira se aprofundar neste assunto, deixo abaixo algumas recomendações:

Espero ter ajudado. Não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

Em caso de dúvidas estou à disposição.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!