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

Argumentos do random.seed

Não entendi muito bem a documentação do random.seed, mas entendi que ele pode receber um inteiro como argumento e se eu colocar um inteiro como argumento, sempre vou receber o mesmo número pseudoaleatorio. Agora não entendi o que quer dizer o segundo argumento no exemplo do professor:

>>> random.seed(1, 101)
>>> random.randrange(100)
19

Me parece que random.seed (1, 101) é a mesma coisa que random.seed(1), então pra que o segundo argumento?

3 respostas

Maurício,

O parametro version foi implementado nas novas versões do Python(3.xx). com a versão 1 o algoritmo para str e bytes gera um intervalo mais restrito de sementes.

Mais detalhes disponíveis na documentação oficial. https://docs.python.org/3/library/random.html

Eu li a documentação, mas ainda não ficou claro pra que serve o segundo argumento.

solução!

Essencialmente é para compatibilidade de código entre a versão 2.7 e 3.xx. Pense que todo código produzido na versão 2.7 do Python que não tinha o parâmetro "version", com isso seed gera um determinado padrão de aleatoriedade, mas esse padrão possui um "limite" e começa a se repetir.

Quando esse código implementado na versão 2.7 for migrado para 3.7, o padrão será alterado pois agora temos o parâmetro "version", com isso seed possui um limite maior que antes de começar a se repetir. Isso teoricamente é bom para nos programadores.

Mas veja o problema que aparece com isso, o código que utiliza seed vai apresentar comportamento diferente para quem executar na versão 2.7 e 3.7 do Python, isso é um problema quando estamos homologando uma implementação de software. Para resolver isso temos o parâmetro version, quando você precisar do comportamento existente na versão 2.7 do Python você precisa implementar version=1, quando você quiser o comportamento da versão 3.7 você não precisa informar o parâmetro ou então passar o valor 2(version=2).