Jump to content

Para que serve random.seed()?


wickenz
 Share

Recommended Posts

Boa noite.

Eu sou universitário e no curso que estou a tirar, tenho a cadeira de Introdução à Programação, sendo que estou a programa em Python.

Estava por aqui a ver aquilo que estivemos a dar nas aulas teóricas até agora e não consigo perceber o que é que faz o "random.seed(x)"? E porque é que se fizermos o programa:

import random
random.seed(0)
for i in range(10):
       print(random.randint(1,6))

Ele irá mostrar sempre os mesmos valores?

Obrigado pela atenção!

Edited by thoga31
GeSHi
Link to comment
Share on other sites

wickenz,

Primeiro é necessário compreenderes que os números de que estás a falar na realidade são pseudo-aleatórios, uma vez que o computador não consegue gerar números verdadeiramente aleatórios -- utiliza um cálculo (por vezes complexo) cujo resultado parece aleatório.

A função random.seed inicializa toda a maquinaria que depois é utilizada para calcular o próximo número. Como tal, todo este processo é completamente determinístico e dependente do valor com que inicializas o processo -- por esse motivo é que os valores são os mesmos se utilizares um valor inicial semelhante.

Se utilizares a data actual em vez de 0 para a random.seed os valores serão diferentes de cada vez que invocares o teu programa, porque a seed será sempre diferente.

Link to comment
Share on other sites

Obrigado pela resposta, pwseo.

Gostaria, no entanto, de perguntar mais uma coisa dado que não fiquei 100% esclarecido. Qual é a diferença entre usar um x=10 ou x=2? Porque o valor de x é que diferencia os valores que o ciclo me vai dar. E é isso que eu não estou a conseguir perceber.

Link to comment
Share on other sites

Imagina a seguinte fórmula (a × r + c) % m. Aqui, a, c e m são constantes (que precisam de ser escolhidas com cuidado).

O valor de r é dado pelo último número pseudo-aleatório gerado... Quando ainda não geraste nenhum valor pseudo-aleatório, precisas de dar o valor inicial de r, sendo que em todas as chamadas subsequentes o valor de r é substituído pelo valor aleatório obtido na chamada anterior.

Logicamente, com valores diferentes de r, o valor aleatório inicial será diferente e, por esse motivo, também os subsequentes.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.