Laboratório Computacional 3

No laboratório computacional, você praticará o que aprendeu. Resolva os problemas com o auxílio do Python pesquisando apenas as informações essenciais de que precisa. Não use respostas prontas.

Problema: Programe uma função multadd que multiplique cada item de uma lista \(L\) lista por \(k\) e some \(c\). Por exemplo:

L = [1,2,3]
multadd(lista,2,1)
[3,5,7] # este é o resultado neste caso

Problema: Gere uma lista aleatória de 100 inteiros não-nulos \(L\) contendo números pares e ímpares. Em seguida, programe uma função f(L) que retorne uma tupla \((a,b,c,d,e)\) em que:

  • \(a\) é a quantidade de números pares na lista

  • \(b\) é a sublista de \(L\) que contém apenas números pares

  • \(c\) é a quantidade de números ímpares na lista

  • \(d\) é a sublista de \(L\) que contém apenas números ímpares

  • \(e\) é um teste lógico que deve retornar True se \(a + c\) = \(|L|\), onde \(|L|\) é a cardinalidade (número de elementos) de \(L\).

Enfim, crie uma função g(L,t) que imprima os conteúdos da tupla t (exceto \(b\) e \(d\)) em um template que mostre o seguinte:

|L| = . 
a = .
c = .
e = True

Nota: importe sample ou randint de random. Observe que, acima, os pontos . servem apenas para denotar placeholders (substitutos) que devem ser substituídos pelos números inteiros obteníveis no seu cômputo.

Problema: Neste capítulo, apresentamos um exemplo relacionado ao teste aleatório de pessoas que entram em um hospital ao longo de um dia. Naquele exemplo, calculamos a probabilidade de a pessoa ser doadora universal, bem como de ter outro tipo sanguíneo no sistema ABO. Utilize essas informações para fazer o que se pede:

  1. Defina a probabilidade total diária \(m_A\) de uma pessoa que entra no hospital ter sangue do tipo \(A\) como:

\[m_A = P(A+) + P(A-)\]

onde

  • \(P(A+)\) é a probabilidade de pessoas que entram no hospital cujo sangue é \(A+\).

  • \(P(A-)\) é a probabilidade de pessoas que entram no hospital cujo sangue é \(A-\).

  1. Crie uma função que calcule \(m_A\) a partir de um teste aleatório equivalente ao mostrado na sala. Considere \(N \geq 500\) pessoas.

  2. Melhore o código apresentado criando uma função que realize o teste aleatório e lhe retorne as probabilidades. Seu dado de entrada será praticamente o valor de \(N\) e a saída um objeto iterável a seu critério (dict, por exemplo).

  3. Crie uma estrutura de repetição para que a função seja executada por até \(q \geq 3\) vezes supondo que o teste aleatório seja repetido a cada novo dia no hospital. Considere que a cada dia subsequente, \(N\) novas pessoas entrem no hospital.

  4. Calcule a probabilidade \(m_A\) para o dia 1, dia 2, … dia \(q\) (note que elas podem ser diferentes) e armazene os dados em alguma estrutura que você ache melhor.

  5. Determine o valor médio de probabilidades

\[M = \dfrac{m_A^1 + m_A^2 + \cdots m_A^q}{q},\]

onde \(m_A^j\), \(j = 1,2,\ldots,q\) é a probabilidade \(m_A\) para o \(j\)-ésimo dia.

Nota: a solução deste problema não é única, assim como não o é a forma de programar.

Problema: Considerando o problema anterior, você conseguiria fazer o mesmo para pessoas com sangue tipo \(AB\), \(B\) e \(O\)? Se sim, quão diferente são os valores de \(M\) para cada grupo durante períodos de análise iguais de até \(q\) dias?