Como funciona o SEED? É uma variável randomica que sempre gera os mesmos números? Como assim?
Como funciona o SEED? É uma variável randomica que sempre gera os mesmos números? Como assim?
O gerador de números pseudoaleatórios precisa de um valor inicial para poder gerar novos números, e esse número nós chamamos de SEED.
Se nosso algoritmo não informar o qual número é esse, esse gerador irá pegar um valor do tempo do sistema operacional para ser o SEED ou de outra fonte de aleatoriedade que o sistema oferecer.
Sendo assim, quando executamos o algoritmo em momentos diferentes, esse gerador de números pseudoaleatórios começará com uma SEED diferente, e portanto as funções que utilizam ou fornecem números aleatórios terão também uma resposta diferente.
Se queremos que nosso programa tenha comportamento aleatório, porém igual em todas as vezes que o executarmos, precisamos iniciar essa SEED com um valor no nosso código.
Um exemplo pode deixar mais claro o entendimento. O exemplo abaixo é um código python executado no terminal:
>>> import random as r
>>> r.seed( 13 )
>>> print("Primeiro aleatorio - ", r.randint(2, 40))
Primeiro aleatorio - 18
>>> print("Segundo aleatorio - ", r.randint(2, 40))
Segundo aleatorio - 20
>>> r.seed( 13 )
>>> print("Primeiro aleatorio depois de definir SEED - ", r.randint(2, 40))
Primeiro aleatorio depois de definir SEED - 18
>>> print("Segundo aleatorio depois de definir SEED - ", r.randint(2, 40))
Segundo aleatorio depois de definir SEED - 20
Mudar o SEED é como "reiniciar" o random, para aquela versão. Isso é interessante por que o resultado que você obteve fica replicável. Ou seja, se você executar esse mesmo código que que coloquei acima, em sua máquina, você obterá o mesmo resultado que eu obtive na minha, em momentos diferentes.
Para entender como a linguagem utiliza esse valor do SEED para gerar uma enorme variedades de números que respeite alguns critérios de aleatoriedade, aí já é necessário uma explicação um pouco mais complexa, que não cabe nessa resposta.
Para mais informações, você pode dar uma olhada na documentação: https://docs.python.org/3/library/random.html