现在我有1张表字段如下ID QUEUE_PRIORITY
1 100
2 200
3 10000
4 500QUEUE_PRIORITY 表示 被取到的概率值我想 通过概率 取2个值出来 意思就是 取到 2的概率 是 200/(100+200+10000+500)怎么排序法 就是每次查询这条sql得时候 第一条记录 出现 3 这个最多也有可能出现 1 或者 2 或者4如果sql无法实现 能在java里面实现吗
求大大指教javaoraclesql
1 100
2 200
3 10000
4 500QUEUE_PRIORITY 表示 被取到的概率值我想 通过概率 取2个值出来 意思就是 取到 2的概率 是 200/(100+200+10000+500)怎么排序法 就是每次查询这条sql得时候 第一条记录 出现 3 这个最多也有可能出现 1 或者 2 或者4如果sql无法实现 能在java里面实现吗
求大大指教javaoraclesql
计算出概率区间:
1 2 3 4
[0,0.009],(0.009,0.028],(0.028,0.954],(0.954,1.000]
很懒地把精度做到三位。然后产生一个随机数,看这个数的值落入哪个区间,然后就取对应的值就可以了。public static void main(String[] args) {
//[0,0.009],(0.009,0.028],(0.028,0.954],(0.954,1.000]
String key = new String();
Random random = new Random();
Float p = random.nextFloat();
if(p>=0&&p<=0.009)
key = Constant.KEY1;
else if(p>0.009&&p<=0.028)
key = Constant.KEY2;
else if(p>0.028&&p<=0.954)
key = Constant.KEY3;
else if(p>0.954&&p<=1)
key = Constant.KEY4;
System.out.println(key);
}我这里是假设你数据不多,全拿出来放到hashmap中,这里拿到了key,自然就取对应的值就OK了