2
respostas

Dúvida no cálculo

Olá amigos ,

Tentando compreender melhor o cálculo informado : aleatorio()*(max-min+1)+ min select rand() * (300-15+1)+ 15;

Verificando um outro tópico fechado, foi dito que a adição do 1 é para que se possa atingir o valor máximo (se eu não tiver entendido errado kkkk), a adição do valor mínimo é para partir de um número acima daquele valor. Se alguém puder tentar me ajudar a entender de uma outra forma , agradeço, ainda não ficou tão claro pra mim , eu apenas assumi como verdadeiro. Entretanto realizei um teste com os valores informados, o rand irá variar de >=0 a <1 , assumindo rand como 0,999 , o que seria um valor próximo a 1, teríamos : 0,999 *(286)+15 285,714+15= 300,714

O que seria um valor superior ao limite estabelecido, o limite inferior, testando com o valor 0, dá certo. A fórmula estaria correta ?

2 respostas

Seguindo a aula, ele insere também a função Floor, que irá retornar apenas os valores inteiros, dessa forma retornaria no máximo o valor 300 mesmo.

Caso alguém possa realizar uma nova tentativa de explicar a fórmula eu agradeço. O acréscimo do valor mínimo no final eu compreendi que é para iniciar pelo menos dali os valores, agora o acréscimo do 1 não consegui compreender corretamente.

Caso não houvesse esse 1 em ((max - min) + 1) o valor máximo do intervalo (300) nunca seria selecionado, já que ele está fazendo o arredondamento para baixo, e a função rand nunca retorna 1, apenas 0 <= rand() < 1.

Digamos que o numero sorteado tenha sido 0,9999999, e não existisse o 1:

0,9999999 * (300 - 15) + 15 = 299,999972

ao arredondar 299,999972 para baixo: 299