Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Reverter set de seed

Entendi que ao se setar um seed, como no exemplo abaixo, passa-se a fixar sempre o mesmo comportamento para as variáveis aleatórias, porém caso durante o tempo de execução do programa se deseja reverter esse comportamento tornando as variáveis aleatórias novamente como se daria o comando?

>>> random.seed(100)     
>>> random.randrange(1, 101)
19
3 respostas
solução!

Oiii Ruy, como você está? Espero que esteja bem ^-^

Sinto muito pela demora em obter um retorno.

Quando não definimos o seed, por padrão o programa irá pegar a hora atual do nosso sistema, como mostra na documentação da linguagem. E como sempre teremos um horário diferente, por consequência sempre a semente será diferente, por isso da aleatoriedade.

Já quando fixamos uma semente, bloqueamos a possibilidade de a cada execução ser um número aleatório diferente, pois a semente será a mesma para todas as execuções. Tudo bem até aqui?

Agora, quanto a fazermos uma reversão em tempo de execução podemos utilizar o recurso de pegar a hora atual do sistema para a função seed, voltando assim o comportamento original dela. Em código fica da seguinte forma:

random.seed(int(time.time()))

Teste o código abaixo e observe que no segundo print o número será aleatório a cada execução, enquanto no primeiro print o número se mantém:

import random
import time

random.seed(100)
print(random.randrange(1, 101))
random.seed(int(time.time()))
print(random.randrange(1, 101))

Qualquer dúvida estou por aqui, tá bom?

Abraços e bons estudos!

Muito bem Nádia, esse comportamento de utilizar time para o seed pode ser visualizado em código C.

Muito obrigado Nádia, a solução funcionou perfeitamente