oracle 或者 java 通过概率取得对应的值
现在我有1张表字段如下ID QUEUE_PRIORITY1 100
2 200
3 10000
4 500
QUEUE_PRIORITY 表示 被取到的概率值我想 通过概率 取2个值出来 意思就是 取到 2的概率 是 200/(100+200+10000+500)怎么排序法
就是每次查询这条sql得时候
第一条记录 出现 3 这个最多
也有可能出现 1 或者 2 或者4
如果sql无法实现 能在java里面实现吗
求大大指教 java oracle sql --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 不是根据概率来排序 也不是求概率值 而是 随机取一条记录 但是QUEUE_PRIORITY中值越高的那条记录 被取到的概率越大 --------------------编程问答-------------------- 建议做在java里面,方便取随机数做逻辑判断~sql很弱地说。。。 --------------------编程问答-------------------- 楼上的大大 请问怎么做 --------------------编程问答-------------------- 前提是你这张表的数据量不太大。就拿你举例的数据来做,如下:
计算出概率区间:
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了
补充:Java , Web 开发