Suponha que você queira gerar números pares aleatórios uniformemente distribuídos no intervalo [A, B] (onde A e B são pares, para facilitar)
Se você gerar um número aleatório inteiro no intervalo [0, (B - A) / 2], multiplicar o número por 2, e somar com A, não vai ter o número que você quer?
Vamos gerar um número aleatório x entre 0 e 65 (ou seja, r.nextInt (66), onde r é uma variável do tipo java.util.Random que foi previamente instanciada))
Digamos que o número gerado x tenha sido 0. Então A + 2x = 1900 + 2 * 0 = 1900
Digamos que o número gerado x tenha sido 65. Então A + 2x = 1900 + 2 * 65 = 1900 + 130 = 2030
Para um caso dentro dos limites, digamos que x tenha sido 10. Então A + 2x = 1900 + 20 = 1920.
[quote=entanglement]Wellington, vamos fazer algumas contas.
Digamos que A = 1900 e B seja 2030.
Então: B - A = 2030 - 1900 = 130
130 / 2 = 65
Vamos gerar um número aleatório x entre 0 e 65 (ou seja, r.nextInt (66), onde r é uma variável do tipo java.util.Random que foi previamente instanciada))
Digamos que o número gerado x tenha sido 0. Então A + 2x = 1900 + 2 * 0 = 1900
Digamos que o número gerado x tenha sido 65. Então A + 2x = 1900 + 2 * 65 = 1900 + 130 = 2030
Para um caso dentro dos limites, digamos que x tenha sido 10. Então A + 2x = 1900 + 20 = 1920.
Portanto, o que eu falei está certo. [/quote]
odoido!!!
só pegar o numero impar ou par dividir por 2 e multiplicar por 2
Não é por nada não, mas o seu não funciona do jeito que você quer. Suponha que A = 10 e B = 100. No seu caso, você usou nextInt (10), o que diz que apenas 10 valores podem ser sorteados). Mas você, intuitivamente, deve saber que existem 91 valores possíveis entre 10 e 100, dos quais 46 são pares.
[quote=entanglement]Suponha que você queira gerar números pares aleatórios uniformemente distribuídos no intervalo [A, B] (onde A e B são pares, para facilitar)
Se você gerar um número aleatório inteiro no intervalo [0, (B - A) / 2], multiplicar o número por 2, e somar com A, não vai ter o número que você quer?
[/quote]
Se ele entregar isso acho que vai ser o único que vai mandar pro professor uma solução que não seja o “brute force” óbvio
[quote=entanglement]Pergunta - no meu tempo, “gerar” era “enumerar”, não “gerar números aleatórios”. O seu problema, Max, não seria algo muito mais simples, algo como:
for (int i = A; i <= B; ++i) {
if (i % 2 == 0)
System.out.println (i);
}
[/quote]
Quando eu bati o olho na pergunta imaginei que era algo assim, aí depois escorreguei nas fórmulas matemáticas e não entendi mais nada hehehe
[quote=entanglement]Pergunta - no meu tempo, “gerar” era “enumerar”, não “gerar números aleatórios”. O seu problema, Max, não seria algo muito mais simples, algo como:
for (int i = A; i <= B; ++i) {
if (i % 2 == 0)
System.out.println (i);
}
[/quote]
após ver o outro post dele…tenho quase certeza que era isso ai…
[quote=entanglement]Wellington, vamos fazer algumas contas.
Digamos que A = 1900 e B seja 2030.
Então: B - A = 2030 - 1900 = 130
130 / 2 = 65
Vamos gerar um número aleatório x entre 0 e 65 (ou seja, r.nextInt (66), onde r é uma variável do tipo java.util.Random que foi previamente instanciada))
Digamos que o número gerado x tenha sido 0. Então A + 2x = 1900 + 2 * 0 = 1900
Digamos que o número gerado x tenha sido 65. Então A + 2x = 1900 + 2 * 65 = 1900 + 130 = 2030
Para um caso dentro dos limites, digamos que x tenha sido 10. Então A + 2x = 1900 + 20 = 1920.
Portanto, o que eu falei está certo. [/quote]
É verdade. Falta de atenção minha.