Número randômico

6 respostas
RealJavaMan

tenho o seguinte problema:

Há 3 eventos possíveis – A, B e C --, que podem ocorrer aleatoriamente.
Eu preciso modelar isso em Java.

É bem fácil quando a probabilidade de cada um ocorrer é a mesma.
Basta atribuir um número pra cada um (A=0,B=1,C=2) e obter um número randômico nesse intervalo.
Mas, no meu caso, elas podem ser diferentes.
Por exemplo:

  • A tem 60% de chance de ocorrer
  • B tem 30%
  • C tem 10%

Como gerar um número randômico nessa situação?

Qualquer ajuda é bem-vinda.

6 Respostas

SrFabio

Ora não é tão complicado quanto isso. Podes fazer do seguinte modo

Geras um número aleatório de 0 a 9

Se o número estiver entre 0 e 5 -> Faz o evento A (0 a 5 corresponde a 60% dos números entre 0 e 9)

Se o número estiver entre 6 e 8 -> Faz o evento B (30% dos números entre 0 e 9)

Se o número for 9 -> Faz o evento C (10% dos números entre 0 e 9)

Espero ter sido útil :wink:

RealJavaMan

É, pois é, também me ocorreu isso.
Acontece que podem vir números fracionários como 30,34%.
E aí, utilizando essa solução, já fica mais complicado.

Tava pensando se já não existe alguma coisa pronta em alguma biblioteca,
pra não ter que ficar matando a cabeça com esses números. :lol:

SrFabio

Mas isso está relacionado com a forma como geras o número aleatório. De que forma é que estás a gerar o número?

Podes fazer assim:

double aleatorio = Math.random(); // Gera um número aleatório entre 0 e 1

int numero = (int) aleatorio * 9; // O intervalo passa a ser entre 0 e 9, repara que vão sair sempre números inteiros.
B

Cara só uma coisa,
se voce está entrando para a area de desenvolvimento
e não quer quebrar a cabeça …

é melhor procurar outra profissão.

RealJavaMan

caro BrunoKelly,

sem dramas!
Nada de quebrar a cabeça nem abandonar a profissão.
Prefira a reutilização sempre.

B

Com certeza RealJavaGirl.

Criado 1 de maio de 2009
Ultima resposta 1 de mai. de 2009
Respostas 6
Participantes 3