ChiCuadrado !!?¿

buenas gente,como andan?¿?
Tengo un problemita con como hacer unas pruebitas de chi cuadrado,es para una materia y el compilador me esta dando el sigte error:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 5, Size: 5
at java.util.ArrayList.RangeCheck(ArrayList.java:547)
at java.util.ArrayList.get(ArrayList.java:322)
at ChiCuad.CargoMuestra(ChiCuad.java:78)
at ChiCuad.main(ChiCuad.java:100)
Java Result: 1
GENERACIÓN CORRECTA (total time: 1 second)

La pregunta del millon como puedo hacerlo de la manera correcta.....Es decir, como puedo resolver el problema del chi cuadrado, hay les va mi codigo:
import java.util.*;

public class ChiCuad {
//Cargo el Array de marcas
public static ArrayList CargoMarca(){
ArrayList marca= new ArrayList();
//int i=0;

marca.add(0);
marca.add(1);
marca.add(2);
marca.add(3);
marca.add(4);
return marca;
}

//Cargo el Array de probabilidades
public static ArrayList CargoProb(){
ArrayList prob= new ArrayList();
prob.add(0.08);
prob.add(0.17);
prob.add(0.26);
prob.add(0.35);
prob.add(0.14);
return prob;
}

//Cargo el Array de probabilidades acumuladas
public static ArrayList CargoAcum(){
ArrayList acum= new ArrayList();
acum.add(0.08);
acum.add(0.25);
acum.add(0.51);
acum.add(0.86);
acum.add(1.00);
return acum;
}

//Cargo Array de series
public static ArrayList CargoSerie(){
ArrayList serie=new ArrayList();
int i=0;

double sem= 1121;

while(i<=200){
double modu= 10000;
double pa= 37;
double r1= (pa*sem)%modu;
double alea= r1/modu;
serie.add(alea);
sem=0.0;
sem=r1;
i++;
}
return serie;
}

//Cargo el Array de muestra
public static ArrayList CargoMuestra(){
ArrayList miMuestra= new ArrayList();
ArrayList miSerie= CargoSerie();
ArrayList miAcum= CargoAcum();
ArrayList miMarca= CargoMarca();
int k=0;

while(k<=200){
for(int j=0;j<=miSerie.size();j++){
if(miSerie.get(j)<=miAcum.get(j)){
miMuestra.add(miMarca.get(j));
}
}
k++;
}
return miMuestra;

}

public static void main(String arg[]){
ArrayList fecob= new ArrayList();//Array de frecuencias observadas
ArrayList fectot= new ArrayList();//Array de frecuencia total

ArrayList marca= CargoMarca();
ArrayList prob= CargoProb();
ArrayList probAc= CargoAcum();

//Scanner texto= new Scanner(System.in);
double n= 200;
int m= 5;
ArrayList muestra= CargoMuestra();
int i=0;
//int j=0;
while(i<=n){
for(int j=0;j

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Jose Manuel

Un consejo

Hola oscar_fernandez, amigo te invito a leer y/o revisar los dos artículos mencionados aquí abajo.
Recuerda que esta es una comunidad y todos debemos de hacer lo mejor que podamos para que sea una de calidad y pueda brindar la ayuda que nos proporciona.


Saludos.

Imagen de ezamudio

RTFS

Imagen de XinefPro

Un error que encontre en tu

Un error que encontre en tu codigo se da en este fragmento :
 

Mira, si n es el numero de elementos de tu arraylist, osea n = miSerie.size(), y el primer elemento tiene posicion 0
entonces por simple inspeccion te puedes dar cuenta de que el ultimo elemento de tu arraylist esta en la posicion n - 1, por
eso es que esa sentencia for da un error, porque recorre desde 0 hasta n, cuando deberia de recorrer desde 0 hasta n - 1.
Creo que solo basta con cambiar el simbolo <= por < en el for:

 

Re: Un error que encontre en tu

Ese era el error de hecho (al menos el de la excepción IndexOutOfBounds).