Gerar inteiros randomicos

4 respostas
bru_1987

Ola galera! Nao consigo resolver esses probleminhas aqui…se alguem puder me ajudar, agradeco desde ja!

Como gerar um inteiro randomico I em que 0 <= I < 20 ?
Como gerar um inteiro randomico I em que 10 <= I < 20 ?
Como gerar um inteiro randomico I em que 10 <= I <= 50 ?

Valeu!
=)

4 Respostas

T

Vamos resolver o primeiro problema, e ver que os outros são uma variação do primeiro.

Para gerar números aleatórios de 0 até N-1 você usa:

import java.util.Random;
...
static Random r = new Random();
...
void teste() {
    System.out.println (r.nextInt (N));
}
...

Agora você consegue fazer as contas:
0 &lt= I &lt 20 --&gt N = 20

10 &lt= I &lt 20 -&gt veja que o problema é equivalente a:
10 - 10 &lt= I - 10 &lt 20 - 10
ou seja:
10 - 10 &lt= I - 10 &lt 10
ou seja: N = 10. Seu programa seria:

System.out.println (10 + r.nextInt (10));

10 &lt= I &lt= 50 -&gt Veja que o problema equivale a:
10 &lt= I &lt 51,
ou seja:
10 - 10 &lt= I - 10 &lt= 51 - 10
ou seja: N = 41. Seu programa:

System.out.println (10 + r.nextInt (41));
Reilander

Brother, acho que o código seria mais ou menos assim:

import java.util.Random; // classe responsável por gerar números pseudo-aleatórios

public class Teste
{
   public static void main( String args[] )
   {
      // cria objeto da classe Random
      Random random = new Random();

      // captura dos números
      int num1 = random.nextInt(20);         // 0 - 19
      int num1 = 10 + random.nextInt(20); // 10 - 19
      int num1 = 10 + random.nextInt(41); // 10 - 50

      /* Aqui você faz o que quiser com eles */
   }
}

A semântica da utilização de Random para númeors inteiros pode ser ilustrada da seguinte maneira:

int numero = valorDeDeslocamento + random.nextInt( fatorDeDeslocamento );

Onde:
valorDeDeslocamento = primeiro número no intervalo desejado (0 por default)
fatorDeDeslocamento = especifica quantos números estão no intervalo

Ex:

int numero = random.nextInt(6);

"numero" pode receber inteiros de 0 a 5.

int numero = 1 + random.nextInt(6);

"numero" pode receber inteiros de 1 a 6.

int numero = -1 + random.nextInt(6);

"numero" pode receber inteiros de -1 a 4.

Espero ter ajudado!
Quaisquer observações - correções e/ou acréscimos - serão bem-vindas!

bru_1987

Valeu galera! Vcs me ajudaram muito!
Abracos!
:smiley:

A

A resposta do Reilander ta bastante didática! Parabéns

Criado 29 de janeiro de 2007
Ultima resposta 30 de jan. de 2007
Respostas 4
Participantes 4