Maquina

manezgz
27 de Agosto del 2005
Hoal, tengo q hacer un programq q se llame maquina de Galton, es la mauqina esta famosa de los clavos y las monedas q pueden ir a la izquierda o derecha aleatoriamente y dependiendo van bajando por os niveles hasta q caen a uno de los cajones.Tengo q hacerlo para cualquier numero de niveles, cualquier numero de monedas y cualquier numero de mauqinas.Las maquinas se deben almacenar en una pila de nodos de forma q cada nodo(maquina) apunte a la siguienete mauqina.
He hecho el codigo, pa que aparezca una ventana y uno textfields de donde pilla los datos de niveles,monedas y mauqinas, y despues he implementadao lo de la maquina, q el resultado debe salir en la consola.el tema es q para una mauqina funciona muy bien, pero si lo pongo para varias mauqinas el resultado de todas las maquinas es identico.Esto es un fallo y no se a q es debido.Micodigo es el siguiente:
mport java.util.Random;
import java.awt.*;
import java.awt.event.*;
public class Galton extends Frame{
maquinas m=new maquinas();
Button b=new Button("Simular");
TextField t1=new TextField();
Label l1=new Label("Monedas");
Label l2=new Label("Niveles");
Label l3=new Label("Maquinas");
TextField t2=new TextField();
TextField t3=new TextField();
Galton(){
t1.reshape(20,40,50,20);
l1.reshape(20,60,60,20);
t2.reshape(100,40,50,20);
l2.reshape(100,60,60,20);
t3.reshape(180,40,50,20);
l3.reshape(200,60,60,20);
b.reshape(260,40,50,20);
add(t1);
add(l1);
add(t2);
add(l2);
add(t3);
add(l3);
add(b);
setLayout(null);
resize(400,110);
addWindowListener( new WindowAdapter() {
public void windowClosing( WindowEvent evt ) {
System.exit( 0 );
}
});
show();
b.addMouseListener( new MouseAdapter()
{ public void mousePressed(MouseEvent e){
int monedas = Integer.parseInt(t1.getText());
int niveles = Integer.parseInt(t2.getText());
int maq = Integer.parseInt(t3.getText());
maquinas[] lista=new maquinas[maq];
for(int i=0;i<maq;i++){
lista[i]=new maquinas();
}
m.g=lista[0];
System.out.println("Maquina 1");
lista[0].Simular(monedas,niveles);
for(int i=0;i<maq-1;i++){
lista[i].g=lista[i+1];
System.out.println("Maquina"+(i+2));
lista[i].g.Simular(monedas,maq);
}
}});
}

public static void main( String args[] ) {
new Galton();
}


}
class maquinas{

int[] cajones=new int[100];
maquinas g;
Random rnd = new Random();

public void Simular(int monedas,int niveles){
int pos=0;

for(int i=0;i<monedas;i++){
pos=0;
for (int j=0;j<niveles;j++){
if((rnd.nextInt() * 10.0)>4){
pos=pos+1;
}
}
cajones[pos]=cajones[pos]+1;
}

System.out.println("Simulacion");
for(int z=0;z<niveles+1;z++){
System.out.print("[");
System.out.print(""+z);
System.out.print("]");
System.out.println(""+cajones[z]);
}

}
}
y el resultado si lo simulo es:
Maquina1
Simulacion
[0]3
[1]10
[2]13
[3]4
Maquina2
Simulacion
[0]3
[1]10
[2]13
[3]4
¿alquien sabe por que?¿Alquien puede ayudarme?
Gracias