Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Dúvida no exercício da parte 6

Não consegui entender o porquê da multiplicação por 101. Já li algumas explicações, porém elas não condizem com o que está na questão. a questão pede números no intervalo de 1 a 100, incluindo o 100. No caso do código utilizado na resposta, teríamos de 0 a 99, caso o intervalo de "random()" seja [0, 1) , ou 0 a 101, caso o intervalo de "random()" seja [0, 1]. Isso porque a função "int", simplesmente corta os números após a vírgula, não os arredonda. Sendo assim, nunca teríamos o número 100 e o código não estaria de acordo com a questão ao meu ver. Onde estou errando?

int(random.random() * 101);
3 respostas

Acredito que você deve usar a função int pois o random retorna um valor completamente aleatório

//Por exemplo, um valor gerado diretamente no console do Python
>>> import random
>>> print(random.random())
0.9767188067141408

Esse valor seria aleatório, inclusive com os decimais, por isso você tem que arredondar usando a função int. Só umas dicas:

//Tente usar o random.randrange, pois nele você pode passar o parâmetro máximo e o mínimo do arredondamento
print(random.randrange(0, 100))
//tente também usar o round, pois ele não simplesmente corta os números, mas os arredonda:
print(round(random.randrange(0, 100)))
//No caso ele vai pode sortear apenas até 99, pois sempre o último número é cortado 

Fica a dica ;)

Oi Edgard, tudo bem?

Colocaram o 101 para "dificultar" nossa escolha. rs

O exercício pedia o seguinte: Selecione todas as opções abaixo que são uma instrução do Python capaz de gerar um número inteiro aleatório entre 0 e 100 (incluindo 100, ou seja [0,100]):

Resumindo: Gerar um número inteiro aleatório entre 0 e 100.

int(random.random()) * 101
  1. Para gerar o número aleatório, foi utilizado a função random.random() Ela retorna um número float entre 0.0 e um valor menor que 1.0 (ou seja, até 0.9999)

  2. Para converter o número como inteiro, foi utilizado a função int(). Ela retorna só a parte inteira do número (sem arredondar). E como o random.random() retorna sempre 0.XXXX, o resultado do int() é 0 (zero)

  3. E no final quando é feita a multiplicação por 101 o resultado será sempre zero. (0 x 101 = 0)

Espero ter ajudado!

Abraço e bons estudos!

solução!

Boa noite, Edgar.

A função

int(random.random() * 101);

obtém números aleatórios entre [0,101) (ou [0,100]).

Como a função random() retorna valores entre [0,1), ao fazer random()*101, obtém-se o intervalo [0,1)*101 = [0,101). Logo, é a múltiplicação por 101 que possibilita gerar números entre [0,100].

Exemplificando:

  • Se random() retornar 0.9999999999999999, a multiplicação 0.9999999999999999*101 resultará em 100.99999999999999 e, consequentemente, int(100.99999999999999) será 100.