
pacman
(usa Ubuntu)
Enviado em 25/10/2005 - 00:36h
isso não é java, isso é matematica
vc quer gerar um numero aleatório entre X e Y, certo ?
partimos do seguinte, X < Y, tal que o numero gerado vai estar entre X <= numero <= Y
Bom, primeiro, como vc gera um numero aleatório entre 0 e 1 (normalmente os extremos não são incluidos) ?
Ta isso vc sabe, agora e entre 0 e 2 ?
a resposta é rápida, multiplica por 2 o numero aleatório !
e entre 1 e 3 ?
(...)
qual a diferença entre gerar um numero aleatório entre 1 e 3, e um entre 0 e 2 ? a diferença é 1 !
2 * numero_aleatorio + 1
Sacou a malandragem ?
-Pô, então eu tenho que multiplicar e somar por alguma coisa ?
-Sim
Ta, vamos ver por que vc gera entre 1 e 3 desse jeito:
o que interessa, em um primeiro momento, é o intervalo entre os numeros. entre 1 e 3 o intervalo é 2 (3 - 1 = 2 - 0 = 2), este é o valor que vc multiplica pelo numero aleatorio gerado entre 0 e 1. isso é a amplitude do numero.
agora vc precisa ajustar "pro lado". o numero mais baixo que vc gera é zero, e o numero mais alto que vc pode gerar é 2. vc tem que gerar entre 1 e 3.
0 + 1 = 1
2 + 1 = 3
logo vc tem que somar 1 pra tudo isso ser gerado no intervalo certo.
entre -1 e 1 ? barbada !
1 - (-1) = 2
2 * numero aleatorio + (-1)
por que ? por que o menor numero gerado é zero, se vc subtrai 1, fica direitinho
ou seja, (Y - X) * numero_aleatorio + X gera o seu numero entre X e Y.