比例选举

简介: 选举对象 1 package com.yeepay.sxf.xuanju; 2 /** 3 * 被选举对象 4 * @author sxf 5 * 6 * 7 */ 8 public class Channle { 9 //名字 10 ...

选举对象

 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

 

相关文章
|
7月前
|
算法
7-6 连续因子
7-6 连续因子
56 0
|
7月前
|
算法
最大流判定(星际转移问题)
最大流判定(星际转移问题)
63 0
|
5月前
|
缓存 负载均衡 算法
(四)网络编程之请求分发篇:负载均衡静态调度算法、平滑轮询加权、一致性哈希、最小活跃数算法实践!
先如今所有的技术栈中,只要一谈关于高可用、高并发处理相关的实现,必然会牵扯到集群这个话题,也就是部署多台服务器共同对外提供服务,从而做到提升系统吞吐量,优化系统的整体性能以及稳定性等目的。
|
6月前
|
弹性计算 负载均衡 监控
加权最小连接数算法介绍
加权最小连接数算法介绍
221 6
|
7月前
|
网络协议 Linux 网络安全
socket的心跳间隔和可用连接数的矛盾和平衡
socket的心跳间隔和可用连接数的矛盾和平衡
70 0
|
算法 调度 C++
【OSTEP】进程调度: 介绍 | Convoy护航效应 | 最短任务优先(SJF) | 最短完成时间优先(STCF) | 轮转 RR | 结合I/O
【OSTEP】进程调度: 介绍 | Convoy护航效应 | 最短任务优先(SJF) | 最短完成时间优先(STCF) | 轮转 RR | 结合I/O
167 0
L1-006 连续因子 (20 分)
L1-006 连续因子 (20 分)
142 0
|
NoSQL MongoDB 开发者
添加副本节点和仲裁节点|学习笔记
快速学习添加副本节点和仲裁节点
7-8 连续因子 (20 分)
7-8 连续因子 (20 分)
114 0
|
Java 程序员 开发者
Eureka的TimedSupervisorTask类(自动调节间隔的周期性任务)
了解Eureka server在定时更新服务列表时依赖的细节
378 0
Eureka的TimedSupervisorTask类(自动调节间隔的周期性任务)