4
respostas

NumPy - Reprodutibilidade

Consigo gerar uma sequência de números aleatórios/ pseudo-aleatórios e consigo reproduzi-los através da função seed. A pergunta é, consigo encontrar o valor seed das sequências de números aleatórios apresentadas anteriormente? Começava com 0,40 depois foi gerada outra sequência que começava com 0,21 e posteriormente 0,81. Somente depois falamos sobre o valor de seed retornar a mesma sequência "aleatória".

4 respostas

Olá, Dmitri!

Pelo que entendi da sua pergunta, você está querendo saber se é possível encontrar o valor seed das sequências de números aleatórios geradas anteriormente.

Na aula, foi explicado que a função np.random.seed() é utilizada para definir um número semente fixo para inicializar o gerador aleatório. Ao utilizar o mesmo número semente, é possível gerar a mesma sequência de números aleatórios.

No exemplo dado na aula, foi utilizado o valor de seed 16:

np.random.seed(16)
np.random.uniform(low=0.10,high=0.90,size=100)

Ao executar esse código, é retornado um array com números. Se você rodar novamente essa célula, terá acesso à mesma sequência de números. Isso garante a reprodutibilidade dos resultados.

No entanto, se você copiar e executar apenas a função np.random.uniform(), sem definir o seed novamente, você obterá uma sequência diferente da anterior. Isso ocorre porque a semente é reiniciada sempre que o gerador aleatório é rodado. Portanto, é importante manter o np.random.seed() antes da geração aleatória.

Quanto ao valor passado para o seed, ele é importante. Diferentes valores de seed gerarão sequências diferentes, mas isso não interfere na qualidade dos números aleatórios gerados. Desde que o valor esteja dentro de um intervalo possível, você pode escolher qualquer número e a qualidade não será afetada.

Porém, se você não tem o número utilizado para gerar a sequência de números aleatórios, fica praticamente impossível recuperar o número usado porque o número de possibilidades é praticamente infinito.

Espero ter esclarecido sua dúvida! Se tiver mais alguma pergunta, é só me dizer.

Espero ter ajudado e bons estudos!

Eu queria fazer o "inverso".... Foi gerada uma sequência de números através do valor 16 da função seed. Vamos supor que agora não sabemos que o valor de seed é 16, com essa sequência em mãos consigo verificar que ela corresponde ao valor 16 da função seed? Como se fosse uma forma de "conferencia".

Você consegue verificar que foi o 16 se usar o 16 para testar. Mas não tem como saber qual número a pessoa usou. Ela pode ter usado 16,104808284 ou qualquer outro número entre, abaixo ou acima desses números. Além disso, não temos uma fórmula matemática para tentar recuperar o valor. A única opção seria por tentativa e erro.

Em resumo, não dá.

Entendi, Muito obrigado meu amigo