wickenz Posted December 3, 2015 at 11:00 PM Report Share #590345 Posted December 3, 2015 at 11:00 PM (edited) 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 December 4, 2015 at 10:14 PM by thoga31 GeSHi Link to comment Share on other sites More sharing options...
pwseo Posted December 4, 2015 at 12:03 PM Report Share #590367 Posted December 4, 2015 at 12:03 PM 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 More sharing options...
wickenz Posted December 4, 2015 at 06:13 PM Author Report Share #590387 Posted December 4, 2015 at 06:13 PM 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 More sharing options...
pwseo Posted December 4, 2015 at 08:51 PM Report Share #590393 Posted December 4, 2015 at 08:51 PM 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now