Em computação algoritmos para geração de números aleatórios é um assunto antigo. Eles são muito importantes e amplamente utilizados em várias áreas da computação como jogos, simulações e criptografia. Números verdadeiramente aleatórios, True Random Number Generators (TRNGs), são extraídos de fenômenos físicos como lançamento de dados, cara ou coroa e roleta. São muito difíceis de se obter por meio da algoritmos. Sistemas operacionais como Unix e Linux utilizam a função dev/random para a geração de TRNGs tendo por base dados aleatórios gerados por ruídos oriundos do ambiente, ou alguns fenômenos físicos que ocorrem no computador como por exemplo os impulsos elétricos produzidos pelo movimento do mouse.
Devido a dificuldade em se obter TRNGs, muitos algoritmos foram criados para a geração de números pseudo-aleatórios, Pseudo Random Number Generator (PRNGs). Por serem determinísticos seu uso não é recomendado para aplicação em criptografia ou segurança. Entretanto, são úteis e amplamente empregado em várias outras situações como simulações e jogos de computador.
Neste artigo vou demostrar como utilizar o módulo random em Python para a geração de PRNGs e como empregá-lo em um jogo de adivinhação.
O Python usa o PRNG Mersenne Twister que hoje um dos geradores de números aleatórios mais conhecido e utilizado. Desenvolvido em 1997 por Makoto Matsumoto e Takuji Nishimura, este PRNG foi projetado para resolver muitas das falhas encontradas em algoritmos anteriores. Como veremos a seguir, seu uso é muito simples e versátil. Como já mencionado o Python utiliza o módulo random para a geração de números aleatórios por meio do algorítimo Mesenne Twiester. Este modulo faz parte da biblioteca padrão do Python 3 não sendo necessário sua instalação. E para a sua utilização basta fazer a importação do modulo:
import random
A geração de um número aleatório qualquer pode ser feita da seguinte forma:
import random
print( random.random() )
Observe que o número gerado é do tipo float, caso queira gerar um número inteiro entre 1 e 5 você pode usar:
import random
print( random.randint(1,5) )
Você ainda pode especificar uma lista de valores para serem sorteados aleatoriamente como:
import random
print( random.choice(["amarelo","verde","azul","branco"]) )
Agora que já sabemos como utilizar o método random para gerar números aleatórios, vamos criar o nosso jogo de adivinhação. Neste caso precisaremos primeiro gerar um número entre 1 e 5 que será armazenado numa variável que podemos chamar de X. O programa deverá então pedir para o usuário adivinhar qual o número que o computador tem em “mente”. O número informado pelo usuário poderá então ser armazenado na variável N. Neste jogo o usuário terá 3 chances de adivinhar qual o número, caso adivinhe o número ele ganha, caso contrário o computador vence.
import random
X = random.randint(1,5)
rodada = 1
print("O computador pensou em um numero de 1 a 5. Tente adivinhar")
while rodada <= 3:
print("Esta a tentativa", rodada," de 3")
N = int(input("Qual o numero? "))
if N == X:
print("Correto, voce venceu o jogo!")
break
else:
print("Incorreto!")
rodada+=1
if rodada>3:
print("Sinto muito, mas o computador venceu o jogo!")
print("O numero que o computador pensou foi",X)
Aproveite para testar o programa e fazer as modificações que quiser. Se ainda não conhece a linguagem Python dê uma olhada no Guia do Desenvolvedor Python (Mini-Curso + e-Book) GRÁTIS.