Curso Avançado de Desenvolvimento Python
Capítulo
>
Nível
Módulos de Matemática
Módulo Aleatório
Objetivo
Execute simulações e testes para se preparar para quaisquer erros e contratempos durante a construção da fazenda, utilizando o módulo random.
Atravesando o anexo, há um escritório que cuida de algumas tarefas administrativas, lidando com a papelada relativa ao envio, habitação e logística para a construção. Seria uma boa ideia executar alguns cenários utilizando os dados disponíveis para calcular contratempos e falhas de equipamentos. Para ajudar nisso, temos o módulo random, ativado por import random .
O módulo é utilizado para gerar saídas aleatórias em diversos graus, permitindo que você execute simulações ou adicione elementos aleatórios aos seus cálculos/exercícios. Para os nossos propósitos, utilizaremos as seguintes funções:
random.seed(): Define a semente para a geração aleatória, recebe um argumento que é o número da semente que você deseja usar. Isso significa que qualquer função aleatória utilizada com uma determinada semente retornará os mesmos resultados quando usada. Isso é utilizado para exercer algum controle sobre a geração aleatória e poder recriar certos resultados.random.random(): Retorna um número de ponto flutuante aleatório entre0e1.random.randint(): Recebe dois (2) argumentos, gera um número entre os dois argumentos, incluindo os próprios números. O resultado é retornado como um número inteiro.random.uniform(): Igual à função anterior, mas retorna um número de ponto flutuante aleatório ao invés de um inteiro.random.triangular(): Igual à função anterior, mas possui um argumento extra como modificador chamado mode. O mode precisa ser um número entre os dois números do intervalo aleatório. O número aleatório gerado será estatisticamente mais próximo do mode, ao invés de ser um número puramente aleatório entre os dois primeiros (2) argumentos.random.choice(): Recebe uma lista como argumento, escolhe aleatoriamente um (1) item da lista.random.choices(): Gera uma lista aleatória amostrada de outra lista, recebe três (3) argumentos: uma lista da qual você deseja amostrar, outra lista na qual você pode indicar quanto peso cada item da lista tem na amostragem e, finalmente, uma variável chamada k para a qual você atribui um valor que indica quantas amostras você deseja retirar da lista. O número de amostras pode ser maior que o tamanho da lista, pois serão geradas duplicatas com base nos pesos atribuídos.random.shuffle(): Recebe uma lista como argumento e a embaralha aleatoriamente.random.sample(): Recebe dois argumentos, uma lista para amostrar e o número de amostras que você deseja retirar. Uma versão simplificada dorandom.choices().
Para começar, caminhe até a marca X clara e vire-se para a mesa, use a função read() para ler o memorando e identificar os pontos de dados necessários para executar uma simulação com alguma variância aleatória. Vamos executar uma simulação de falha de equipamentos; o memorando informará qual seed utilizar para a geração aleatória, bem como a lista da qual será feita a amostragem. Use a função random.seed() e insira o valor fornecido no memorando.
Caminhe até a marca X escura, sobre o tapete azul, e vire-se para a mesa. Temos uma constante de lista chamada sectors que contém as áreas da fazenda descritas no memorando anterior. Crie uma variável chamada selection para armazenar o valor de random.choice(), utilizando a constante de lista sectors para obter uma amostra, assim: selection = random.choice(sectors). Crie outra variável chamada delay e armazene o valor de random.random() para simular margens de erro causadas por atrasos.
Crie mais uma variável chamada defect e armazene o valor de random.randint() para gerar uma porcentagem de potencial falha de equipamento. Adicione como argumentos 0 e 15 para gerar uma porcentagem entre esses dois números. Uma vez que as variáveis: selection, delay e defect estejam configuradas, use a função pré-escrita write() com as três (3) variáveis, nessa ordem, para registrar os pontos de dados que podem ser usados para testar potenciais problemas na construção.
Caminhe até a marca X dourada e use a função read() para continuar executando projeções; os dados do memorando conterão materiais, quantidades e dados de amostragem. Vamos executar uma simulação maior usando os dados do memorando, incluindo uma constante de lista chamada materials que armazena os tipos de materiais descritos no memorando.
Caminhe até a marca X escura, sobre o tapete vermelho, e vire-se para a mesa. Crie uma lista chamada weights e armazene os quatro (4) valores numéricos presentes no memorando, correspondentes aos materiais na ordem em que são apresentados. Por exemplo: weights = [400, 600 , -insert value-, -insert value-]
Crie uma variável chamada simulation e armazene o valor de random.choices(), adicione a constante de lista materials, a lista weights que você criou e uma lista denominada k contendo as unidades de amostragem descritas no memorando, assim: simulation = random.choices(materials, weights , k = insert sampling units ). Use a variável simulation com a função pré-escrita write() para registrar os dados.
Caminhe até a marca X escura, sobre o tapete verde, e vire-se para a mesa, use a função random.shuffle() com a lista simulation que você criou para embaralhá-la, assim: random.shuffle(simulation). Isso embaralhará a lista, não sendo necessário armazenar o valor, pois a alteração é feita diretamente na lista. Crie uma lista chamada sample para armazenar o valor de random.sample(), adicionando a lista simulation como primeiro argumento e, para o segundo argumento, faça uma amostragem de 3 para obter três (3) itens aleatórios como amostra, assim: sample = random.sample(simulation, k=3). Utilize simulation e sample com a função pré-escrita write() para registrar as novas amostras.
Finalmente, caminhe até a marca X escura, sobre o tapete roxo, e vire-se para a mesa; crie uma variável chamada defect e armazene o resultado de random.uniform(), adicionando os argumentos 3 e 10. Esses são os valores de amostragem para a simulação original e a amostra retirada dela; usaremos isso para gerar margens de defeito potencial do equipamento a partir da amostra obtida.
Crie uma variável chamada losses e armazene o valor de random.triangular(), adicionando os valores 200, 600 e 400. Esses são os números dos materiais descritos no memorando anterior, especificamente o menor, o maior e o valor mais próximo do meio. Isso nos permite obter um valor aleatório triangular com base no número de materiais utilizados na simulação. Use os valores de defect e losses com a função pré-escrita write() para obter os resultados e completar o nível.