java隨機事件分發(fā)器示例
以下需求:
20%的概率去執(zhí)行方法A,
1%的概率去執(zhí)行方法B,
29%的概率去執(zhí)行方法C,
50%的概率去執(zhí)行方法D
如果用if隨機數(shù)之類的語句去判斷的話,可能會寫的很亂,我寫了一個隨機分發(fā)器,可以規(guī)范該操作。使用該分發(fā)器后的代碼如下:
//創(chuàng)建一個分發(fā)器
RandomDispatcher randomDispatcher = new RandomDispatcher();
//設置每種事件的概率,注意,概率之和不一定是100哦
randomDispatcher.put(20, 1);
randomDispatcher.put(1, 2);
randomDispatcher.put(29, 3);
randomDispatcher.put(50, 4);
//隨機
int retIndex = randomDispatcher.random();
//根據(jù)隨機結果去執(zhí)行不同的方法
switch (retIndex) {
case 1:
System.out.println("do method A");
break;
case 2:
System.out.println("do method B");
break;
case 3:
System.out.println("do method C");
break;
case 4:
System.out.println("do method D");
break;
default:
break;
}
相關文章
Java中Vector、ArrayList、LinkedList的關系詳細解析
這篇文章主要介紹了Java中Vector、ArrayList、LinkedList的關系詳細解析,Vector和ArrayList底層均為Object數(shù)組,LinkedList底層是Node節(jié)點,Vector是線程安全(底層方法均添加synchronized),ArrayList、LinkedList是線程不安全(無鎖),需要的朋友可以參考下2023-11-11SpringBoot?@Value與@ConfigurationProperties二者有哪些區(qū)別
這篇文章主要介紹了SpringBoot?@Value與@ConfigurationProperties二者的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧2022-10-10在RedisTemplate中使用scan代替keys指令操作
這篇文章主要介紹了在RedisTemplate中使用scan代替keys指令操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11