码迷,mamicode.com
首页 > 其他好文 > 详细

按比例分配资源

时间:2014-08-22 17:41:09      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   java   for   ar   art   问题   div   

    现在项目中需要将某一资源按比例分配给不同的应用处理,比如10个资源请求,按2:3:5分配给A、B和C三个应用服务器处理,那么就是A应用处理2个资源请求,B应用处理3个资源请求,C应用处理5个资源请求。问题是10个资源请求不是同时到达,而是一个一个的分配处理,此时就不能定量的分配处理。目前想到的实现方式是将分配比例看作概率,然后利用随机数产生概率事件决定由哪个应用处理资源。还是上面的例子,就是某一个资源有20%的概率给A处理,30%的概率给B处理,50%的概率给C处理。以下为JAVA实现的代码:

 1 // 定义App数组
 2    String[] sApps = new String[]{};
 3 
 4    /*
 5     * 定义分配比例数组,值为1~100间的整数
 6     * 分配比例数组元素下标与App数组元素下标对应
 7     * 数组中所有元素的值之和等于100
 8     */
 9    int[] iRates = new int[]{};
10 
11    // 定义随机数,随机数区间为[1,100]中的整数 
12    int rndNum = new Random().nextInt(100) + 1;
13 
14    int iStart = 1; // 区间起始位
15    int iEnd = 0; // 区间结束位
16 
17    /*
18     * 将100分成App个数个连续区间
19     * 每个App分配比例对应一个区间
20     * 循环判断产生的随机数在哪个区间
21     */
22    for (int i = 0; i < iRates.length; i++) 
23    {
24        iEnd = iEnd + iRates[i];
25        
26        if (iStart <= rndNum && rndNum <= iEnd) 
27        {
28            System.out.println("Winner:"+sApps[i]);
29            break;
30        }
31        
32        iStart = iStart + iRates[i];
33    }

可能还有其他好的实现方式,以后想到再添加。

 

(That‘s all)

按比例分配资源

标签:style   blog   color   java   for   ar   art   问题   div   

原文地址:http://www.cnblogs.com/junspace/p/3929877.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!