当前位置:编程学习 > JAVA >>

oracle 或者 java 通过概率取得对应的值

现在我有1张表字段如下ID QUEUE_PRIORITY
                     1    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 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,