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