2
respostas

Não concordo que a resposta A é correta!

Discordo que a letra A faça parte da resposta, pois se o Random() vai de 0.0 a 1.0, caso a função retorne 1, vai ficar o seguinte: int( 1 * 101) = 101 Neste caso 101 é maior que 100 e está fora da faixa do que foi pedido no exercício (0 a 100). Estou errado??

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

Fala Luiz, beleza?

Seguinte, como estamos pedindo uma int, 101*1 nesse caso retornaria 1 de qualquer forma pelo arredondamento. Se fosse um float, seria um problema, mas números int são sempre sem as casas decimais, por isso o 101 nesse caso, para garantir que existe a possibilidade de retornar 1.

Espero que tenha te ajudado!

Eduardo, tenho que discordar, na verdade a função int() não realiza arredondamento, ela apenas trunca (corta) as casas decimais.

Luiz, eu também fiquei com essa mesma dúvida, mas após dar uma lida melhor no doc da função random() pude perceber na verdade o valor 1.0 nunca será retornado, conforme mencionado na documentação "Return the next random floating point number in the range [0.0, 1.0)." com o trecho range(0.0, 1.0) o valor 1.0 não se aplica, da mesma forma com que no range(0,100) o valor 100 não conta e temos que definir o range sendo (0,101). Com isso o valor máximo seria 0.999 e multiplicando isso por 101 teríamos um valor de 100,8999 e como não há arredondamento após a função int() teríamos o valor 100

Espero ter ajudado compartilhando o que entendi!

Trechos do DOC

random.random()

Return the next random floating point number in the range [0.0, 1.0).

random() # Random float: 0.0 <= x < 1.0