import%20marimo%0A%0A__generated_with%20%3D%20%220.9.3%22%0Aapp%20%3D%20marimo.App(width%3D%22medium%22)%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20import%20marimo%20as%20mo%0A%20%20%20%20return%20(mo%2C)%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20import%20os%0A%20%20%20%20return%20(os%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22Gerar%20n%C3%BAmeros%20verdadeiramente%20aleat%C3%B3rios%20em%20um%20computador%20depende%20do%20hardware.%20Em%20Python%2C%20podemos%20fazer%3A%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(os)%3A%0A%20%20%20%20seed%20%3D%20int.from_bytes(os.urandom(64))%0A%20%20%20%20seed%0A%20%20%20%20return%20(seed%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22A%20gera%C3%A7%C3%A3o%20de%20n%C3%BAmeros%20aleat%C3%B3rios%20%C3%A9%20lenta%2C%20e%20por%20isso%20n%C3%A3o%20%C3%A9%20comumente%20usada%20para%20simula%C3%A7%C3%B5es%2C%20jogos%20ou%20aplica%C3%A7%C3%B5es%20est%C3%A1ticas.%20Nesses%20casos%2C%20usamos%20um%20%5Bgerador%20de%20n%C3%BAmeros%20pseudo-aleat%C3%B3rios%5D(https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FPseudorandom_number_generator).%20Esses%20geradores%20s%C3%A3o%20completamente%20determin%C3%ADsticos%3A%20dado%20um%20mesmo%20input%20(a%20*seed*%20original)%2C%20eles%20geram%20a%20mesma%20sequ%C3%AAncia%20de%20n%C3%BAmeros%20pseudoaleat%C3%B3rios.%20Em%20Python%20podemos%20especificar%20uma%20seed%20assim%3A%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20import%20random%0A%20%20%20%20return%20(random%2C)%0A%0A%0A%40app.cell%0Adef%20__(random%2C%20seed)%3A%0A%20%20%20%20random.seed(seed)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22A%20fun%C3%A7%C3%A3o%20%60random%60%20do%20m%C3%B3dulo%20%60random%60%20pode%20servir%20de%20base%20para%20a%20defini%C3%A7%C3%A3o%20de%20outras%20fun%C3%A7%C3%B5es%20aleat%C3%B3rias%20do%20mesmo%20m%C3%B3dulo.%20Ela%20produz%20um%20float%20no%20intervalo%20%24%5B0%2C%201)%24%3A%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(random)%3A%0A%20%20%20%20random.random()%2C%20random.random()%2C%20random.random()%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20Ex.%20moeda%20justa%0A%0A%20%20%20%20%20%20%20%20Escreva%20uma%20fun%C3%A7%C3%A3o%20que%20retorne%20%601%60%20com%20probabilidade%200.5%2C%20e%20%600%60%20com%20probabilidade%20igual.%20N%C3%A3o%20use%20outra%20fun%C3%A7%C3%A3o%20al%C3%A9m%20de%20%60random.random%60%20na%20sua%20defini%C3%A7%C3%A3o.%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(random)%3A%0A%20%20%20%20%23%20solu%C3%A7%C3%A3o%0A%20%20%20%20def%20moeda()%3A%0A%20%20%20%20%20%20%20%20return%201%20if%20random.random()%20%3E%3D%200.5%20else%200%0A%20%20%20%20return%20(moeda%2C)%0A%0A%0A%40app.cell%0Adef%20__(moeda)%3A%0A%20%20%20%20moeda()%20%3D%3D%201%20%23%20True%20com%20probabilidade%20de%2050%25%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20Ex.%20bernoulli%0A%0A%20%20%20%20%20%20%20%20Defina%20uma%20fun%C3%A7%C3%A3o%20que%20retorne%201%20com%20probabilidade%20%60p%60%20(par%C3%A2metro%20da%20fun%C3%A7%C3%A3o)%2C%20e%200%20com%20probabilidade%20%601-p%60.%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(random)%3A%0A%20%20%20%20%23%20solu%C3%A7%C3%A3o%0A%20%20%20%20def%20bernoulli(p)%3A%0A%20%20%20%20%20%20%20%20return%201%20if%20random.random()%20%3C%20p%20else%200%0A%20%20%20%20return%20(bernoulli%2C)%0A%0A%0A%40app.cell%0Adef%20__(bernoulli)%3A%0A%20%20%20%20bernoulli(0.4)%20%3D%3D%201%20%23%20True%20com%20probabilidade%20de%2040%25%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20Ex.%20uniforme%0A%0A%20%20%20%20%20%20%20%20Escreva%20a%20fun%C3%A7%C3%A3o%20que%20nos%20d%C3%A1%20um%20float%20no%20intervalo%20%5Ba%2C%20b%5D.%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(random)%3A%0A%20%20%20%20%23%20solu%C3%A7%C3%A3o%0A%20%20%20%20def%20uniform(a%2C%20b)%3A%0A%20%20%20%20%20%20%20%20return%20a%20%2B%20(b-a)%20*%20random.random()%0A%20%20%20%20return%20(uniform%2C)%0A%0A%0A%40app.cell%0Adef%20__(uniform)%3A%0A%20%20%20%20uniform(1%2C%2010)%20%23%20um%20float%20no%20intervalo%20%5Ba%2C%20b%5D%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20Ex.%20choice%0A%0A%20%20%20%20%20%20%20%20Escreva%20uma%20fun%C3%A7%C3%A3o%20que%20retorna%20um%20elemento%20aleat%C3%B3rio%20de%20uma%20sequ%C3%AAncia.%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22Para%20tal%2C%20pode%20ser%20%C3%BAtil%20relembrar%20as%20fun%C3%A7%C3%B5es%20de%20arredondamento%20do%20Python%3A%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20round(0.6)%2C%20round(0.2)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20import%20math%0A%0A%20%20%20%20math.ceil(0.1)%2C%20math.floor(0.7)%0A%20%20%20%20return%20(math%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(random)%3A%0A%20%20%20%20%23%20solu%C3%A7%C3%A3o%0A%20%20%20%20def%20choice(xs)%3A%0A%20%20%20%20%20%20%20%20n%20%3D%20random.random()%20*%20len(xs)%0A%20%20%20%20%20%20%20%20return%20xs%5Bint(n)%5D%0A%20%20%20%20return%20(choice%2C)%0A%0A%0A%40app.cell%0Adef%20__(choice)%3A%0A%20%20%20%20%23%20Exemplo%0A%20%20%20%20choice(%5B2%2C%203%2C%204%2C%205%5D)%20%23%20--%3E%202%20ou%203%20ou%204%20ou%205%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20Ex.%20randrange%0A%0A%20%20%20%20%20%20%20%20Escreva%20a%20fun%C3%A7%C3%A3o%20que%20nos%20d%C3%A1%20um%20inteiro%20aleat%C3%B3rio%20entre%20a%20e%20b%20(exclusive).%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(choice)%3A%0A%20%20%20%20%23%20solu%C3%A7%C3%A3o%0A%20%20%20%20def%20randrange(a%2C%20b)%3A%0A%20%20%20%20%20%20%20%20return%20choice(range(a%2C%20b))%0A%20%20%20%20return%20(randrange%2C)%0A%0A%0A%40app.cell%0Adef%20__(randrange)%3A%0A%20%20%20%20randrange(1%2C%2010)%20%23%20--%3E%20um%20inteiro%20no%20intervalo%20%5B1%2C%2010)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20Ex.%20conta-casos%0A%0A%20%20%20%20%20%20%20%20Para%20testarmos%20as%20fun%C3%A7%C3%B5es%20que%20escrevemos%2C%20%C3%A9%20%C3%BAtil%20ter%20uma%20fun%C3%A7%C3%A3o%20que%20simule%20experimentos%20aleat%C3%B3rios%20discretos%2C%20contando%20os%20resultados%20de%20cada%20um.%0A%0A%20%20%20%20%20%20%20%20Escreva%20uma%20fun%C3%A7%C3%A3o%20que%20tem%20como%20par%C3%A2metros%20uma%20fun%C3%A7%C3%A3o%20aleat%C3%B3ria%20e%20um%20inteiro%20n%2C%20a%20qual%20deve%20chamar%20a%20fun%C3%A7%C3%A3o%20aleat%C3%B3ria%20n%20vezes%2C%20retornando%20uma%20contagem%20dos%20resultados%20de%20cada%20chamada.%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__()%3A%0A%20%20%20%20%23%20solu%C3%A7%C3%A3o%0A%20%20%20%20def%20conta_casos(f%2C%20n)%3A%0A%20%20%20%20%20%20%20%20contagem%20%3D%20%7B%7D%0A%20%20%20%20%20%20%20%20for%20_%20in%20range(n)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20r%20%3D%20f()%0A%20%20%20%20%20%20%20%20%20%20%20%20contagem%5Br%5D%20%3D%20contagem.get(r%2C%200)%20%2B%201%0A%20%20%20%20%20%20%20%20return%20contagem%0A%20%20%20%20return%20(conta_casos%2C)%0A%0A%0A%40app.cell%0Adef%20__(conta_casos%2C%20randrange)%3A%0A%20%20%20%20conta_casos(lambda%3A%20randrange(0%2C%205)%2C%20100)%0A%20%20%20%20%23%20%7B0%3A%2019%2C%201%3A%2022%2C%202%3A%2024%2C%203%3A%2019%2C%204%3A%2016%7D%2C%20por%20exemplo%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20Ex.%20lan%C3%A7a-moedas%0A%0A%20%20%20%20%20%20%20%20Qual%20a%20probabilidade%20de%20se%20ter%2022%20caras%20ou%20mais%20em%2030%20lan%C3%A7amentos%20de%20uma%20moeda%20n%C3%A3o%20viesada%3F%0A%0A%20%20%20%20%20%20%20%20Responda%20de%20duas%20formas%3A%0A%0A%20%20%20%20%20%20%20%201.%20usando%20a%20f%C3%B3rmula%20da%20binomial%3A%20%24X%20%5Csim%20%5Ctext%7BBinom%7D(p%2C%20n)%20%5Cto%20P(X%20%3D%20k)%20%3D%20C%5Ek_n%20p%5Ek%20(1-p)%5E%7Bn-k%7D%24%0A%20%20%20%20%20%20%20%202.%20Simulando%20o%20lan%C3%A7amento%20das%20moedas%20n%20vezes%20(para%20n%20grande)%2C%20e%20estimando%20o%20resultado%20pela%20raz%C3%A3o%20entre%20os%20casos%20favor%C3%A1veis%20e%20n.%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20%23%20usando%20probabilidade%0A%20%20%20%20from%20math%20import%20comb%0A%0A%20%20%20%20comb(5%2C%202)%0A%20%20%20%20return%20(comb%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(comb)%3A%0A%20%20%20%20%23%20solu%C3%A7%C3%A3o%0A%20%20%20%20def%20binomial(n%2C%20k%2C%20p%3D0.5)%3A%0A%20%20%20%20%20%20%20%20return%20comb(n%2C%20k)%20*%20(p%20**%20k)%20*%20(p%20**%20(n%20-%20k))%0A%0A%20%20%20%20sum(binomial(30%2C%20i)%20for%20i%20in%20range(22%2C%2031))%0A%20%20%20%20return%20(binomial%2C)%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20%23%20via%20simula%C3%A7%C3%A3o%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(random)%3A%0A%20%20%20%20%23%20solu%C3%A7%C3%A3o%0A%20%20%20%20_n%20%3D%20100000%0A%20%20%20%20successes%20%3D%20%5B%5D%0A%20%20%20%20for%20_%20in%20range(_n)%3A%0A%20%20%20%20%20%20%20%20nsuccesses%20%3D%20sum(random.random()%20%3C%200.5%20for%20_%20in%20range(30))%0A%20%20%20%20%20%20%20%20successes.append(nsuccesses)%0A%0A%20%20%20%20more_than_22%20%3D%20filter(lambda%20x%3A%20x%20%3E%3D%2022%2C%20successes)%0A%20%20%20%20more_prob%20%3D%20len(list(more_than_22))%20%2F%20len(successes)%0A%20%20%20%20more_prob%0A%20%20%20%20return%20more_prob%2C%20more_than_22%2C%20nsuccesses%2C%20successes%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20Ex.%20histograma-largura-fixa%0A%0A%20%20%20%20%20%20%20%20Nossa%20fun%C3%A7%C3%A3o%20%60conta_casos%60%20que%20conta%20os%20resultados%20de%20m%C3%BAltiplos%20experimentos%20aleat%C3%B3rios%20n%C3%A3o%20%C3%A9%20%C3%BAtil%20quando%20temos%20resultados%20cont%C3%ADnuos.%20Escreva%20uma%20fun%C3%A7%C3%A3o%20que%20calcule%20um%20histograma%20com%20%60k%60%20(par%C3%A2metro)%20bins%20dos%20resultados%20de%20experimentos%20aleat%C3%B3rios%20contidos%20numa%20s%C3%A9rie%20%60rs%60%20(par%C3%A2metro).%20Cada%20bin%20deve%20ter%20a%20mesma%20largura%20(isto%20%C3%A9%2C%20intervalo%20de%20valores).%20O%20resultado%20da%20fun%C3%A7%C3%A3o%20deve%20ser%20a%20lista%20dos%20bins%20escolhidos%2C%20com%20cada%20bin%20sendo%20uma%20tripla%20(valor%20inferior%2C%20valor%20superior%2C%20n%C3%BAmero%20de%20elementos).%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(math)%3A%0A%20%20%20%20%23%20solu%C3%A7%C3%A3o%0A%20%20%20%20def%20histograma_fixo(rs%2C%20k%3DNone)%3A%0A%20%20%20%20%20%20%20%20n%20%3D%20len(rs)%0A%20%20%20%20%20%20%20%20if%20k%20is%20None%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20k%20%3D%20math.ceil(math.log(n%2C%202))%20%2B%201%0A%20%20%20%20%20%20%20%20rs.sort()%0A%20%20%20%20%20%20%20%20w%20%3D%20(rs%5B-1%5D%20-%20rs%5B0%5D)%20%2F%20k%0A%20%20%20%20%20%20%20%20bins%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20l%20%3D%200%0A%20%20%20%20%20%20%20%20u%20%3D%20rs%5B0%5D%20%2B%20w%0A%20%20%20%20%20%20%20%20for%20i%20in%20range(len(rs))%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20rs%5Bi%5D%20%3E%20u%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20bins.append((u%20-%20w%2C%20u%2C%20i%20-%20l))%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20l%20%3D%20i%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20u%20%3D%20u%20%2B%20w%0A%20%20%20%20%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20bins.append((u%20-%20w%2C%20u%2C%20n%20-%20l))%0A%20%20%20%20%20%20%20%20return%20bins%0A%20%20%20%20return%20(histograma_fixo%2C)%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20%23%20usaremos%20esse%20m%C3%B3dulo%20para%20plotar%20os%20resultados%0A%20%20%20%20import%20matplotlib.pyplot%20as%20plt%0A%20%20%20%20return%20(plt%2C)%0A%0A%0A%40app.cell%0Adef%20__(random)%3A%0A%20%20%20%20res_cont%20%3D%20%5Brandom.gauss(0%2C%205)%20for%20_%20in%20range(10000)%5D%0A%20%20%20%20return%20(res_cont%2C)%0A%0A%0A%40app.cell%0Adef%20__(histograma_fixo%2C%20plt%2C%20res_cont)%3A%0A%20%20%20%20%23%20n%C3%A3o%20se%20preocupe%20com%20esse%20c%C3%B3digo%20agora%2C%0A%20%20%20%20%23%20somente%20visualize%20seus%20resultados%0A%20%20%20%20xsf%2C%20_%2C%20hsf%20%3D%20zip(*histograma_fixo(res_cont%2C%2014))%0A%20%20%20%20w%20%3D%20xsf%5B1%5D%20-%20xsf%5B0%5D%0A%0A%20%20%20%20plt.bar(xsf%2C%20hsf%2C%20w%2C%20align%3D'edge')%0A%20%20%20%20return%20hsf%2C%20w%2C%20xsf%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20Ex.%20histograma-largura-v%C3%A1riavel%0A%0A%20%20%20%20%20%20%20%20Nossa%20fun%C3%A7%C3%A3o%20%60conta_casos%60%20que%20conta%20os%20resultados%20de%20m%C3%BAltiplos%20experimentos%20aleat%C3%B3rios%20n%C3%A3o%20%C3%A9%20%C3%BAtil%20quando%20temos%20resultados%20cont%C3%ADnuos.%20Escreva%20uma%20fun%C3%A7%C3%A3o%20que%20calcule%20um%20histograma%20com%20%60k%60%20(par%C3%A2metro)%20bins%20dos%20resultados%20de%20experimentos%20aleat%C3%B3rios%20contidos%20numa%20s%C3%A9rie%20%60rs%60%20(par%C3%A2metro).%20Cada%20bin%20deve%20conter%20aproximadamente%20o%20mesmo%20n%C3%BAmero%20de%20elementos.%20O%20resultado%20da%20fun%C3%A7%C3%A3o%20deve%20ser%20a%20lista%20dos%20bins%20escolhidos%2C%20com%20cada%20bin%20sendo%20uma%20tripla%20(valor%20inferior%2C%20valor%20superior%2C%20densidade%20de%20frequ%C3%AAncia)%2C%20em%20que%20a%20densidade%20de%20frequ%C3%AAncia%20%C3%A9%20definida%20como%20%24%5Cfrac%7B%5Ctext%7Bn%C3%BAmero%20de%20elementos%7D%7D%7B%5Ctext%7Bvalor%20superior%7D%20-%20%5Ctext%7Bvalor%20inferior%7D%7D%24.%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__()%3A%0A%20%20%20%20%23%20solu%C3%A7%C3%A3o%0A%20%20%20%20def%20g_histograma_variavel(rs%2C%20k%3DNone)%3A%0A%20%20%20%20%20%20%20%20n%20%3D%20len(rs)%0A%20%20%20%20%20%20%20%20if%20k%20is%20None%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20k%20%3D%20int(2%20*%20(n%20**%200.4))%0A%20%20%20%20%20%20%20%20rs.sort()%0A%20%20%20%20%20%20%20%20l%20%3D%200%0A%20%20%20%20%20%20%20%20size%20%3D%20n%20%2F%2F%20k%0A%20%20%20%20%20%20%20%20hist%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20for%20i%20in%20range(0%2C%20k%20-%201)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20lowest%20%3D%20rs%5Bl%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20u%20%3D%20l%20%2B%20size%20-%201%0A%20%20%20%20%20%20%20%20%20%20%20%20highest%20%3D%20rs%5Bu%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20freq_density%20%3D%20size%20%2F%20(highest%20-%20lowest)%0A%20%20%20%20%20%20%20%20%20%20%20%20hist.append((lowest%2C%20highest%2C%20freq_density))%0A%20%20%20%20%20%20%20%20%20%20%20%20l%20%3D%20u%0A%20%20%20%20%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20lowest%20%3D%20rs%5Bu%20%2B%201%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20highest%20%3D%20rs%5B-1%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20freq_density%20%3D%20(n%20-%20u%20-%201)%20%2F%20(highest%20-%20lowest)%0A%20%20%20%20%20%20%20%20%20%20%20%20hist.append((lowest%2C%20highest%2C%20freq_density))%0A%20%20%20%20%20%20%20%20return%20hist%0A%20%20%20%20return%20(g_histograma_variavel%2C)%0A%0A%0A%40app.cell%0Adef%20__(g_histograma_variavel%2C%20plt%2C%20res_cont)%3A%0A%20%20%20%20%23%20n%C3%A3o%20se%20preocupe%20com%20esse%20c%C3%B3digo%20agora%2C%0A%20%20%20%20%23%20somente%20visualize%20seus%20resultados%0A%20%20%20%20xsv%2C%20ups%2C%20hsv%20%3D%20zip(*g_histograma_variavel(res_cont%2C%2080))%0A%20%20%20%20wsv%20%3D%20%5Bups%5Bi%5D%20-%20xsv%5Bi%5D%20for%20i%20in%20range(len(xsv))%5D%0A%0A%20%20%20%20plt.bar(xsv%2C%20hsv%2C%20wsv%2C%20align%3D'edge')%0A%20%20%20%20return%20hsv%2C%20ups%2C%20wsv%2C%20xsv%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20Ex.%20comparando%20m%C3%A9dias%0A%0A%20%20%20%20%20%20%20%20Podemos%20comparar%20a%20m%C3%A9dia%20de%20duas%20popula%C3%A7%C3%B5es%20com%20um%20teste%20estat%C3%ADstico%2C%20mas%20podemos%20tamb%C3%A9m%20assumir%20que%20as%20m%C3%A9dias%20s%C3%A3o%20iguais%2C%20e%20simular%20permuta%C3%A7%C3%B5es%20dos%20dados.%20Se%20a%20diferen%C3%A7a%20das%20m%C3%A9dias%20encontrada%20originalmente%20for%20muito%20incomum%20%E2%80%94%20comparativamente%20com%20as%20diferen%C3%A7as%20encontradas%20com%20as%20permuta%C3%A7%C3%B5es%20%E2%80%94%20temos%20evid%C3%AAncia%20estat%C3%ADstica%20de%20que%20as%20m%C3%A9dias%20das%20popula%C3%A7%C3%B5es%20n%C3%A3o%20s%C3%A3o%20iguais.%20Por%20outro%20lado%2C%20se%20as%20diferen%C3%A7as%20encontradas%20com%20as%20permuta%C3%A7%C3%B5es%20forem%20parecidas%20com%20a%20diferen%C3%A7a%20encontrada%20originalmente%2C%20n%C3%A3o%20temos%20motivos%20para%20acreditar%20que%20as%20m%C3%A9dias%20das%20popula%C3%A7%C3%B5es%20s%C3%A3o%20diferentes.%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(random)%3A%0A%20%20%20%20from%20statistics%20import%20mean%0A%0A%20%20%20%20pop1%20%3D%20%5Brandom.gauss(96%2C%2010)%20for%20_%20in%20range(12)%5D%0A%20%20%20%20pop2%20%3D%20%5Brandom.gauss(90%2C%2015)%20for%20_%20in%20range(8)%5D%0A%0A%20%20%20%20m1%20%3D%20mean(pop1)%0A%20%20%20%20m2%20%3D%20mean(pop2)%0A%20%20%20%20diff%20%3D%20m1%20-%20m2%0A%20%20%20%20diff%0A%20%20%20%20return%20diff%2C%20m1%2C%20m2%2C%20mean%2C%20pop1%2C%20pop2%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(diff%2C%20mean%2C%20pop1%2C%20pop2%2C%20random)%3A%0A%20%20%20%20%23%20solu%C3%A7%C3%A3o%0A%20%20%20%20n%20%3D%2010000%0A%20%20%20%20mean_diffs%20%3D%20%5B%5D%0A%20%20%20%20pops%20%3D%20pop1%20%2B%20pop2%0A%20%20%20%20k%20%3D%20len(pop1)%0A%20%20%20%20for%20_%20in%20range(n)%3A%0A%20%20%20%20%20%20%20%20random.shuffle(pops)%0A%20%20%20%20%20%20%20%20p1%2C%20p2%20%3D%20pops%5B%3Ak%5D%2C%20pops%5Bk%3A%5D%0A%20%20%20%20%20%20%20%20mean_diffs.append(mean(p1)%20-%20mean(p2))%0A%0A%20%20%20%20diff_prob%20%3D%20len(list(filter(lambda%20x%3A%20x%20%3E%3D%20diff%2C%20mean_diffs)))%20%2F%20n%0A%20%20%20%20diff_prob%0A%20%20%20%20return%20diff_prob%2C%20k%2C%20mean_diffs%2C%20n%2C%20p1%2C%20p2%2C%20pops%0A%0A%0A%40app.cell%0Adef%20__(diff%2C%20diff_prob%2C%20mean_diffs%2C%20plt)%3A%0A%20%20%20%20%23%20n%C3%A3o%20se%20preocupe%20com%20esse%20c%C3%B3digo%20agora%2C%0A%20%20%20%20%23%20somente%20visualize%20seus%20resultados%0A%20%20%20%20import%20numpy%20as%20np%0A%0A%20%20%20%20fig%2C%20ax%20%3D%20plt.subplots()%0A%20%20%20%20ax.hist(np.array(mean_diffs)%2C%20bins%3D100)%0A%20%20%20%20ax.axvline(diff%2C%200%2C%201%2C%20color%3D'red')%0A%20%20%20%20ax.annotate(f'%7B100%20*%20diff_prob%3A.2f%7D%25'%2C%20(diff%20%2B%202.5%2C%200.5)%2C%20xycoords%3D('data'%2C%20'figure%20fraction')%2C%20color%3D'red')%0A%20%20%20%20plt.show()%0A%20%20%20%20return%20ax%2C%20fig%2C%20np%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%20Cr%C3%A9ditos%0A%0A%20%20%20%20%20%20%20%20Aula%20inspirada%20em%20e%20em%20parte%20baseada%20na%20%5Bapresenta%C3%A7%C3%A3o%5D(https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DIq9DzN6mvYA)%20%E2%80%98Statistics%20for%20Hackers%E2%80%99%20de%20Jake%20Vanderplas.%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
d21d36bf4501a784e8995da7ed7a0d02fe4f8369328d7bf4147e8a1e580c0b1b