Oioi Rogério, tudo bem com você?
Quando estamos trabalhando com a função range()
na estrutura do for, estamos limitando o alcance de repetição, definindo uma sequência numérica em que ele pode trabalhar. Essa sequência numérica pode ter diversas declarações, e uma delas é informando o valor de início (start), fim (stop) e o passo (step) que esse número vai ser gerado. Para melhor visualizar isso, alterei a função print() do seu código para vermos como a estrutura for está trabalhando.
Código:
import random
for i in range(1,61,10):
print("o número aleatório para i={} é {}".format(i, int(random.random()*100)))
Resultado:
o número aleatório para i=1 é 38
o número aleatório para i=11 é 93
o número aleatório para i=21 é 41
o número aleatório para i=31 é 34
o número aleatório para i=41 é 19
o número aleatório para i=51 é 62
O que está acontecendo é que sua função range()
está limitando a estrutura for, e não a sua geração de números aleatórios. A função random()
retorna um número do tipo float no alcance entre 0.0 e 1.0, e mesmo que você torne o número inteiro ao multiplicar por 100, o alcance permanecerá o mesmo (no caso, entre 0 e 100).
Quando queremos gerar um número inteiro aleatório utilizando a biblioteca random em python, e limitando seu alcance, podemos utilizar a função randrange()
, que pode ser colocada nesses três formatos:
numero_aleatorio = randrange(stop) #Modo 01
numero_aleatorio = randrange(start, stop) #Modo 02
numero_aleatorio = randrange(start, stop, step) #Modo 03
O Modo 01 apresenta a declaração utilizando apenas o número que queremos que a função random finalize (stop), e o valor inicial padrão é dado como zero. O Modo 02 apresenta a declaração informando o valor de início (start) e fim (stop) da função e o Modo 03 apresenta o mesmo formato do 02, com o adicional que podemos colocar o passo (step) que esse número vai ser gerado. A função randrange()
retorna então um valor inteiro no intervalo start <= numero_aleatorio < stop
, portanto, não é necessário a transformação para inteiro.
Desse modo, para que o seu código tenha o funcionamento desejado, utilizando a função randrange()
, você pode estruturá-lo da seguinte maneira:
import random
for i in range(6):
print(random.randrange(1,61,10))
Resultado:
21
41
1
1
31
31
Perceba que foram retornados 6 resultados, assim como anteriormente, e o número aleatório é dado naquele alcance e passo definido, antes mostrado por i :)
Caso tenha interesse em saber mais sobre a biblioteca random, te recomendo a leitura da documentação do Python sobre essa biblioteca. Caso queira se aprofundar ainda mais sobre a Linguagem Python, recomendo a formação Python e orientação a objetos na alura!
Em caso de dúvidas, me coloco à disposição.
Grande abraço e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!