Aula 1 de 0
Em Progresso

13. Números aleatórios

Um meio de gerar valores para testar funções e popular listas é usar núme­ros aleatórios ou randômicos. Um número aleatório pode ser compreendido como um número tirado aleatoriamente, sem qualquer ordem ou sequência predeterminada, assim como em um sorteio.

 

Para gerar números aleatórios em Python, usaremos o módulo random. O módulo traz muitas funções para geração de números aleatórios e, inclusive, núme­ros gerados com distribuições não uniformes. Caso deseje saber mais acerca de dis­tribuições, consulte um livro de estatística ou a Wikipédia (http://pt.wiki-pedia.org/wiki/Distribuição_de_probabitidade). Vamos ver a função randint, que recebe dois parâmetros, sendo o primeiro o início da faixa de valores a considerar para geração e o segundo, o fim dessa faixa. Tanto o início como o final são incluídos na faixa.

 

inport randon
for x in range(ÍO):
printfrandon.randintfl, 100))

 

Usamos randint com 1 e 100, portanto, é preciso que os números retornados estejam na faixa entre 1 e 100. Ao chamarmos o número retornado de x, teremos 1 <= x <= 100. Vamos ter valores distintos sendo gerados sempre que executarmos esse programa.

 

Essa diferença também é interessante para lidar com jogos ou introdu­zir elementos de sorte em nosso programa.

 

# Programa 8.20 - Adivinhando o número
import random
n = random.randint(l, 10)
x = int(input("Escolha um número entre 1 e 10:"))
if x == n:
print("Você acertou!")
else:
print("Você errou.")

 

Observe o Programa 8.20, não é possível determinar a res­posta mesmo lendo a listagem. Um número diferente pode ser escolhido a cada execução. Esse tipo de aleatoriedade é usado em muitos jogos e torna a experiência única, fazendo com que o mesmo programa possa ser utilizado muitas vezes com resultados distintos.

 

Exercício 8.13. Mude o Programa 8.20 de forma que o usuário possua três chances de acertar o número. O programa encerra caso o usuário acerte ou erre três vezes.

 

TRIVIA

Python possibilita que escrevamos 0 < x < 10 a fim de representar intervalos. Esse jeito de escrever uma expressão lógica é mais simples de ler que x > 0 and x < 10.

 

Também é possível gerar números aleatórios fracionários ou de ponto flutuante com a função randon. A função randon não recebe parâmetros e retorna valores entre 0 e 1.

 

inport randon
for x in range(10):
print(randon.randon())

 

Com o intuito de obter valores fracionários dentro de uma determinada faixa, é possível usar a função uniforn:

 

inport randon
for x in range(10):
print(randon.uniforn(15, 25))

 

Podemos usar a função sanple a fim de selecionar aleatoriamente elementos de uma lista. Essa função recebe a lista e a quantidade de amostras (samp/es) ou elementos que se pretende retornar. Vamos ver de que forma gerar os números de um car­tão do jogo da Lotto:

 

inport randon
print(randon.sanple(range(l, 101), 6))

 

Caso desejemos embaralhar os elementos de uma lista, é possível usar a função shuffle. Ela recebe a lista para embaralhar, modificando-a:

 

inport randon
a = list(range(l, 11))
randon.shuffle(a)
print(a)

 

Exercício 8.14. Mude o Programa 7.2, o jogo da forca. Selecione a palavra por meio de números aleatórios.