[opcional]
Imprima o resultado da função sigmóide aplicada em 20 pontos aleatórios usando a função random.random do módulo random (import random). Ou seja, avalie a função sigmoide com argumentos aleatórios.
[Use o laço de repetição for como em for _ in range (20) ]
[Use o laço de repetição for como em for _ in range (20) ]
Passo 1
O enunciado pede para imprimir o resultado da função sigmóide aplicada em vinte pontos aleatórios, gerados com a função
random.random do módulo random. As instruções-chave que temos são:- Gerar
números aleatórios usando for _ in range (20). - Aplicar a função sigmóide a cada número.
- Imprimir o resultado de cada avaliação.
Informações relevantes fornecidas:
- Usar
import random. - Usar o laço
for _ in range (20)(observe que o enunciado escreveu com um espaço entrerangee(; isso é válido em Python). - A função sigmóide deve ser avaliada nos números produzidos por
random.random().
Passo 2
Entendendo o que é a função sigmóide (a parte matemática que você precisa saber para a prova):
- A sigmóide clássica (função logística) é definida por
Expliquei cada símbolo:
-
é o valor de entrada (no nosso caso será o número aleatório retornado por random.random()). -
é a base dos logaritmos naturais (aproximadamente ). - A função transforma qualquer número real em um número no intervalo aberto
. Por exemplo, se ,
Isso significa que a sigmóide “espreme” valores para ficarem entre
e
.
Passo 3
Como implementar a sigmóide em Python (conceitos e código linha a linha):
- Precisamos de uma função que receba um número
e retorne . - Em Python usamos
math.exppara calcular. Então a implementação será:
definir a função
def sigmoid(x):
return 1 / (1 + math.exp(-x))
Explicação das linhas:
def sigmoid(x):declara uma função chamadasigmoidque recebe um parâmetrox.math.exp(-x)calcula. 1 / (1 + math.exp(-x))implementa exatamente a fórmula da sigmóide.
Passo 4
Como gerar os
números aleatórios e aplicar a sigmóide (estrutura do laço
for e uso do underscore):random.random()retorna um número do tipofloatuniformemente distribuído em. Ou seja, sempre entre (incluso) e (excluso). - O laço sugerido é
for _ in range (20):. Aqui o underscore_é apenas uma convenção em Python para indicar que a variável do laço não será usada por nome, só serve para repetir o blocovezes. - Dentro do laço: gerar
, calcular y = sigmoid(x)e imprimiry.
Passo 5
Detalhes úteis e boa prática de formatação:
- Para deixar a saída mais legível na prova ou no terminal, é comum formatar os números com um número fixo de casas decimais, por exemplo
print(f"{y:.6f}")para 6 casas decimais. - Se você quiser também ver o valor de entrada e a saída, pode imprimir ambos com
print(f"x={x:.6f} sigmoid={y:.6f}"). - Não é necessário nenhuma biblioteca além de
randomemath.
Passo 6
Código final pronto para rodar (é só copiar e colar num interpretador Python 3). Ele usa exatamente o laço
for _ in range (20) pedido e imprime o resultado da sigmóide para cada número aleatório gerado:import random
import math
def sigmoid(x):
return 1 / (1 + math.exp(-x))
for _ in range (20):
x = random.random()
y = sigmoid(x)
print(f"{y:.6f}")
Resposta
import random
import math
def sigmoid(x):
return 1 / (1 + math.exp(-x))
for _ in range (20):
x = random.random()
y = sigmoid(x)
print(f"{y:.6f}")