Inicialmente este blog foi criado para armazenar algumas dicas e links de UNIX/Linux, OpenVMS, linguagem C, Assembly, TCP/IP e nerdezas afins. No entanto devido ao autor ter abandonado o seu plano de ser um super hacker e dominar o mundo (devido esposa, família, filhos, trabalho), a partir de 2012 este blog tem um tipo de nerdeza mais light (Android, Linux, RetroPie (retrogames), produtividade, e por aí vai). Estas dicas raramente serão criações minhas.

terça-feira, 8 de setembro de 2009

gerando números aleatórios - java

Em um post anterior (gerando números aleatórios) eu fiz uma função para gerar números aleatórios na linguagem C. Agora aí vai uma versão java fortemente inspirada na maneira que faço no post mencionado.

O que eu queria fazer era um bobo jogo de dados. No lançamento de um dado ele me retornaria um valor aleatório entre 1 e 6, inclusive. Aí vai a implementação da classe Dado.


import java.util.Random;

public class Dado {
        private int valorDaFace;
        private static int seed = 0;

        public int getValorDaFace() {
                return valorDaFace;
        }

        public void lançar() {
                Random r = new Random(System.currentTimeMillis() + seed++);

                valorDaFace = 1 + r.nextInt(6);
        } // fim de lançar()

} // fim da classe Dado


O atributo seed é para evitar que quando dois dados sejam lançados um seguido do outro, o resultado seja o mesmo. Em outras palavras, o método System.currentTimeMillis() se chamado muito próximo um do outro, pode retornar o mesmo valor, e isso faria Random gerar o mesmo número. O seed sempre diferente contorna esse problema.

2 comentários:

voyeg3r disse...

em python fazemos assim:

import random
randrange(1,10)

Jhonata Amaral disse...

Fala meleu.

um jeito legal e vc usar a blibioteca math da commons: http://commons.apache.org/

la tem uma classe chamada RandomUtils que implementa Random para varios tipos, legal pq dae vc naum precisa fazer conversões.

int result = RandomUtils.nextInt(6)+1;

Um abraço meu veio,
seu blog ta massa

tags