为了后续推广中,给其他用户起到促进作用,需要添加机器人数据,对初始数据累加随机数据。
1——10的几率:60%
10——20:20%
20——30:10%
30——40:5%
40——50%:2%
50——100:3%
利用权重进行配置,然后随机区间在0到所有权重总和之间,随即后的数到底落在哪个区间就可以了
这种方法简单,可扩展
will this solve your problem?
refer url:http://stackoverflow.com/questions/38838172/percentage-using-random
public int printNum(int num){
Random random = new Random();
int A = random.nextInt(10),
B = random.nextInt(10)+10,
C = random.nextInt(10)+20,
D = random.nextInt(10)+30,
E = random.nextInt(10)+40,
F = random.nextInt(49)+50;
int[] a={A,B,C,D,E,F};
int[] b={60,20,10,5,3,2};
int obj = 0;
int sum = 0;
for(int i=0; i<b.length;i++){
sum += b[i];
if(num <= sum){
obj = a[i];
break;
}
}
return obj;
}
借鉴了一下其他人,自己写了一下,大家觉得有不对的地方吗?
public static void main(String[] args) {
int sumcount = 60 + 20 + 10 + 5 + 2 + 3;
int[][] sum={{60,1,10},{20,10,20},{10,20,30},{5,30,40},{2,40,50},{3,50,100}};
String str = "";
for (int i = 0,len=sum.length; i < len; i++) {
str = getStringArray(sum[i][1], sum[i][2], sum[i][0]*100/sumcount, str);
}
System.out.println(str.split(",")[(int)(Math.random() * 100)]);
}
/**
public class Test {
public static void main(String[] args) {
int[] n = new int[]{1, 2, 1, 3, 1};
int sum = 0;
for (int i = 0; i < n.length; i++) {
sum += n[i];
}
int randNum = 100;
int num = new Random().nextInt(randNum);
int index = -1;
float source = sum;
for (int i = n.length -1; i >= 0 ; i--) {
source = (source - n[i])/(float)sum;
float target = num/(float)randNum;
System.out.println("source:" + source);
System.out.println("target:" + target);
if (source < target) {
index = i;
break;
}
}
System.out.println("随机到了第" + (index + 1) + "个值,内容为:" + n[index]);
}
}