JohnMarston
16-10-2015, 09:21
Ciao a tutti. Ho un range dinamico di valori double contenuti in un arraylist, in ordine crescente (sort).
La sequenza dei numeri può essere negativa/positiva, oppure tutti positivi o solo negativi.
Dunque, questa sequenza la devo dividere in range da 0.05 e tirar fuori gli elementi.
Posso avere il primo elemento che parte da -0.12 fino ad arrivare a +0.60.
Quindi dovrei prendere tutto il range partendo da -0.15 e andare avanti... -0.10, -0.05 fino a +0.60.
I valori all'interno del range (0.05) naturalmente li dovrò salvare in un altro arraylist.
Credevo fosse semplice, magari lo è, magari no... Io non riesco..Chi mi da una mano??
Posto una bozzetta...
public static void main( String[] args) {
double range=0.05;
double []val={-0.30688548677199914, -0.29132854259729857, 0.3639495706070589, 0.3740827373060958, 0.39350464014591247, 0.43910389029157854};
double counter[] = new double[val.length];
for (int i=0; i<val.length; i++) {
System.out.println("val " + val[i]);
int idx = (int)(val[i] / range);
idx = Math.min( idx, counter.length-1);
counter[idx]++;
System.out.println( "idx " + idx );
}
for ( int i = 0 ; i < counter.length-1 ; i++ ) {
System.out.println( counter[i] + " fra il range di " + i*range + " e " + (i+1)*range );
}
System.out.println( counter[counter.length-1] + " sono fuori" );
}
La sequenza dei numeri può essere negativa/positiva, oppure tutti positivi o solo negativi.
Dunque, questa sequenza la devo dividere in range da 0.05 e tirar fuori gli elementi.
Posso avere il primo elemento che parte da -0.12 fino ad arrivare a +0.60.
Quindi dovrei prendere tutto il range partendo da -0.15 e andare avanti... -0.10, -0.05 fino a +0.60.
I valori all'interno del range (0.05) naturalmente li dovrò salvare in un altro arraylist.
Credevo fosse semplice, magari lo è, magari no... Io non riesco..Chi mi da una mano??
Posto una bozzetta...
public static void main( String[] args) {
double range=0.05;
double []val={-0.30688548677199914, -0.29132854259729857, 0.3639495706070589, 0.3740827373060958, 0.39350464014591247, 0.43910389029157854};
double counter[] = new double[val.length];
for (int i=0; i<val.length; i++) {
System.out.println("val " + val[i]);
int idx = (int)(val[i] / range);
idx = Math.min( idx, counter.length-1);
counter[idx]++;
System.out.println( "idx " + idx );
}
for ( int i = 0 ; i < counter.length-1 ; i++ ) {
System.out.println( counter[i] + " fra il range di " + i*range + " e " + (i+1)*range );
}
System.out.println( counter[counter.length-1] + " sono fuori" );
}