Java實現(xiàn)抽獎算法的示例代碼
一、題目描述
題目: 小虛竹為了給粉絲送福利,決定在參與學習打卡活動的粉絲中抽一位幸運粉絲,送份小禮物。為了公平,要保證抽獎過程是隨機的。
二、解題思路
1、把參與的人員加到集合中
2、使用Random對象獲取隨機數(shù)
3、把隨機數(shù)當下標,獲取集合中的幸運用戶
三、代碼詳解
public class Basics28 {
public static void main(String[] args) {
List<String> luckUserNames = getLuckUserNames();
Random random = new Random();
int luckNum = random.nextInt(6);
System.out.println("幸運的未來大佬是:"+luckUserNames.get(luckNum));
}
private static List<String> getLuckUserNames(){
List<String> luckUserNames = new ArrayList<String>();
luckUserNames.add("李慢慢_");
luckUserNames.add("TryAgain-");
luckUserNames.add("team_dog");
luckUserNames.add("Jasonakeke");
luckUserNames.add("學好c語言的小王同學");
luckUserNames.add("Ara~追著風跑");
return luckUserNames;
}
}

四、優(yōu)化抽獎算法
解題思路
隨機次數(shù)太少,需要優(yōu)化
需要列出所有人隨機命中的次數(shù),顯示出來,比較公開公平
代碼詳解
public class LuckDraw {
public static void main(String[] args) {
List<String> luckUserNames = getLuckUserNames();
Random random = new Random();
//key:luckNum ,value:count
Map<Integer,Integer> luckNumMap = new HashMap<Integer, Integer>();
for (int i = 0; i < 100; i++) {
int luckNum = random.nextInt(4);
Integer count = luckNumMap.get(luckNum);
if(count==null){
count = 0;
}
++count;
luckNumMap.put(luckNum,count);
}
Integer maxLuckNum = 0;
Integer maxCount =0;
for(Integer luckNum:luckNumMap.keySet()){
if(maxCount<luckNumMap.get(luckNum)){
maxCount = luckNumMap.get(luckNum);
maxLuckNum = luckNum;
}
System.out.println(luckUserNames.get(luckNum)+"同學的幸運值:"+luckNumMap.get(luckNum));
}
System.out.println("本周學習打卡積分第一且是幸運的未來大佬是:"+luckUserNames.get(maxLuckNum));
}
private static List<String> getLuckUserNames(){
List<String> luckUserNames = new ArrayList<String>();
luckUserNames.add("學好c語言的小王同學");
luckUserNames.add("Ara~追著風跑");
luckUserNames.add("李慢慢_");
luckUserNames.add("Jasonakeke");
return luckUserNames;
}
}

到此這篇關于Java實現(xiàn)抽獎算法的示例代碼的文章就介紹到這了,更多相關Java抽獎算法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
MyBatis源碼解析——獲取SqlSessionFactory方式
這篇文章主要介紹了MyBatis源碼解析——獲取SqlSessionFactory方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12
Spring Boot啟動過程(四)之Spring Boot內(nèi)嵌Tomcat啟動
這篇文章主要介紹了Spring Boot啟動過程(四)之Spring Boot內(nèi)嵌Tomcat啟動的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-04-04
Quartz+Spring Boot實現(xiàn)動態(tài)管理定時任務
最近做項目遇到動態(tài)管理定時任務的需求,剛拿到這個需求還真不知道從哪下手,經(jīng)過一番思考,終于找出實現(xiàn)思路,接下來通過本文給大家介紹了Quartz+Spring Boot實現(xiàn)動態(tài)管理定時任務的相關知識,需要的朋友可以參考下2018-09-09
spring?boot?3使用?elasticsearch?提供搜索建議的實例詳解
這篇文章主要介紹了spring?boot3使用elasticsearch提供搜索建議,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-08-08
Java實現(xiàn)一鍵獲取Mysql所有表字段設計和建表語句的工具類
這篇文章主要為大家詳細介紹了如何利用Java編寫一個工具類,可以實現(xiàn)一鍵獲取Mysql所有表字段設計和建表語句,感興趣的小伙伴可以了解一下2023-05-05
java數(shù)據(jù)結構與算法之桶排序實現(xiàn)方法詳解

