• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

无信不立

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

比例选举

选举对象

 1 package com.yeepay.sxf.xuanju;
 2 /**
 3  * 被选举对象
 4  * @author sxf
 5  * 
 6  *
 7  */
 8 public class Channle {
 9     //名字
10     private String name;
11     //比例
12     private Integer proportion;
13     
14     public Channle() {
15         super();
16     }
17     public Channle(String name, Integer proportion) {
18         super();
19         this.name = name;
20         this.proportion = proportion;
21     }
22     public String getName() {
23         return name;
24     }
25     public void setName(String name) {
26         this.name = name;
27     }
28     public Integer getProportion() {
29         return proportion;
30     }
31     public void setProportion(Integer proportion) {
32         this.proportion = proportion;
33     }
34     
35     
36 
37 }
View Code

选举流程

 1 package com.yeepay.sxf.xuanju;
 2 
 3 import java.util.HashSet;
 4 import java.util.Random;
 5 import java.util.Set;
 6 /**
 7  * 比例选举(存在缺陷,常常选举不到)
 8  * @author sxf
 9  *
10  */
11 public class Proportion {
12     /**
13      * 比例选举
14      * A的比例50%
15      * B的比例30%
16      * C的比例20%
17      * @param args
18      */
19     public static void main(String[] args) {
20         //获取选举对象
21         Set<Channle> set=getChannle();
22         
23         //算出当前随机数
24         Random random=new Random(System.currentTimeMillis());
25         int a=random.nextInt();
26         int b=Math.abs(a);
27         int c=b%100;
28         System.out.println("Proportion.main()"+c);
29         //进行选举
30         for (Channle channle : set) {
31             int d=channle.getProportion();
32             //随机数小于等于比例
33             if(c<=d){
34                 System.out.println("Proportion.main()"+channle.getName()+"被选中");
35                 break;
36             }
37         }
38     
39         
40         
41     }
42     /**
43      * 获取选举对象集合
44      * @return
45      */
46     public static Set<Channle> getChannle(){
47         Channle aChannle=new Channle("A", 50);
48         Channle bChannle=new Channle("B", 30);
49         Channle cChannle=new Channle("C",20);
50         Set<Channle> set=new HashSet<Channle>();
51         set.add(aChannle);
52         set.add(bChannle);
53         set.add(cChannle);
54         return set;
55     }
56 }
View Code

 

posted on 2015-08-25 19:35  无信不立  阅读(265)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3