Random.nextInt repetindo?

4 respostas
Guga360

Eu estava aqui fazendo um programa meio "besta", que gera imagem "randômicas", mas as vezes, não sei se é impressão minha, repete as imagens. Isso está certo?

E tambêm gostaria que dessem uma olhada no código pra ver se pode ter alguns melhoramentos e o que eu devo mudar no meu "estilo de código".

import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.*;
import java.util.Random;

public class guiutil extends JFrame implements ActionListener {
	Random r = new Random();
	Color[] cores = {Color.red, Color.green, Color.blue};
	JButton b;
	JLabel l;
	JCheckBox c;
	
    public guiutil() {
    	super("Random");
    	
    	l = new JLabel();
    	l.setIcon(gera(false));    		 	
    	add(l, "North");
    	
    	b = new JButton("Gera");
    	b.addActionListener(this);
    	add(b, "Center");
    	
    	c = new JCheckBox("Colorido");
    	add(c, "South");
    	
    	pack();
    	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    		
    	setVisible(true);
    }
    
    public static void main(String[] args) {
        new guiutil();
    }
    
    public void actionPerformed(ActionEvent e) {
    	if (c.isSelected()) l.setIcon(gera(true));
    	else l.setIcon(gera(false));
    }
    
    public ImageIcon gera(boolean cor) {
    	BufferedImage bf = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);
    	Graphics g = bf.getGraphics();
    	g.setColor(Color.white);
    	g.fillRect(0,0,100,100);
    	g.setColor(Color.black);
    	
    	for (int i=0; i<10; i++) {
    		if (cor) { g.setColor(cores[r.nextInt(cores.length)]); }
    		int x = r.nextInt(100);
    		int y = r.nextInt(100);
    		g.fillOval(x,y,x+10,y+10);
    	}
    	
    	return new ImageIcon(bf);    	
    	
    }
}

4 Respostas

Andre_Brito

Repete imagens porque a probabilidade de cair na mesma imagem é de 1/3. O que é grande. Se você colocar mais umas 4, 5 cores, vai ver a diferença.

Guga360

Pois é, disso eu sei, mas eu digo de duas imagens idênticas, no modo Preto&Branco.
Deve ser só impressão minha mesmo.
Mas o que eu estou mais interessado é algum melhoramento no meu código. =)

C

Guga360:
Pois é, disso eu sei, mas eu digo de duas imagens idênticas, no modo Preto&Branco.
Deve ser só impressão minha mesmo.
Mas o que eu estou mais interessado é algum melhoramento no meu código. =)

random nao é o que nao se repete, se vc quer garantir resultados diferentes digamos dos ultimos x resultados, vc deve implementar a logica.

LPJava

ou fazer um filtro antes,jogar o resultado em um Set e depois exibir apens se o numero foi diferente!

Criado 11 de outubro de 2008
Ultima resposta 13 de out. de 2008
Respostas 4
Participantes 4