敲了半个下午,还有需要优化的地方。
/**
* Created by yang.jin on 14/12/2016.
*/
public class RouterTest {
public static void main (String[] args){
String sp_range_list_str = "100,240,200,360,270,100,340,210" ;
String[] sp_range_list_str_collection = sp_range_list_str.split("," );
Double[] sp_range_list = strArrayToDoubleArray (sp_range_list_str_collection);
int whichSp = -1 ;
double sp[] = new double [sp_range_list.length ];
double sum = 0 ;
for (int j = 0 ; j < sp_range_list.length ; j++){
sum = sum + sp_range_list[j];
}
Double[] sp_percent_list = new Double[sp_range_list.length ];
for (int i = 0 ; i < sp_percent_list.length ; i++){
sp_percent_list[i] = sp_range_list[i] / sum;
}
for (int m = 0 ; m < sp_percent_list.length ; m++){
double percent_sum = 0 ;
for (int n = 0 ; n <= m; n++){
percent_sum = percent_sum + sp_percent_list[n];
}
sp[m] = percent_sum;
}
double a = Math.random ();
System.out .println(" 落点: " + a);
for (int k = 0 ; k < sp.length ; k++){
if (a > 0 && a <= sp[0 ]){
whichSp = 0 ;
}else if (a > sp[k] && a <= sp[k+1 ]){
whichSp = k + 1 ;
}
}
System.out .println(" 渠道: " + whichSp);
}
private static Double[] strArrayToDoubleArray (String...arr){
Double[] intArr = new Double[arr.length ];
for (int i=0 ; i<arr.length ; i++) {
intArr[i] = Double.parseDouble (arr[i]);
}
return intArr;
}
}