Java實現(xiàn)抽獎算法的示例代碼
一、題目描述
題目: 小虛竹為了給粉絲送福利,決定在參與學(xué)習(xí)打卡活動的粉絲中抽一位幸運粉絲,送份小禮物。為了公平,要保證抽獎過程是隨機的。
二、解題思路
1、把參與的人員加到集合中
2、使用Random對象獲取隨機數(shù)
3、把隨機數(shù)當(dāng)下標(biāo),獲取集合中的幸運用戶
三、代碼詳解
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("學(xué)好c語言的小王同學(xué)"); luckUserNames.add("Ara~追著風(fēng)跑"); 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)+"同學(xué)的幸運值:"+luckNumMap.get(luckNum)); } System.out.println("本周學(xué)習(xí)打卡積分第一且是幸運的未來大佬是:"+luckUserNames.get(maxLuckNum)); } private static List<String> getLuckUserNames(){ List<String> luckUserNames = new ArrayList<String>(); luckUserNames.add("學(xué)好c語言的小王同學(xué)"); luckUserNames.add("Ara~追著風(fēng)跑"); luckUserNames.add("李慢慢_"); luckUserNames.add("Jasonakeke"); return luckUserNames; } }
到此這篇關(guān)于Java實現(xiàn)抽獎算法的示例代碼的文章就介紹到這了,更多相關(guān)Java抽獎算法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MyBatis源碼解析——獲取SqlSessionFactory方式
這篇文章主要介紹了MyBatis源碼解析——獲取SqlSessionFactory方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12Spring Boot啟動過程(四)之Spring Boot內(nèi)嵌Tomcat啟動
這篇文章主要介紹了Spring Boot啟動過程(四)之Spring Boot內(nèi)嵌Tomcat啟動的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-04-04Quartz+Spring Boot實現(xiàn)動態(tài)管理定時任務(wù)
最近做項目遇到動態(tài)管理定時任務(wù)的需求,剛拿到這個需求還真不知道從哪下手,經(jīng)過一番思考,終于找出實現(xiàn)思路,接下來通過本文給大家介紹了Quartz+Spring Boot實現(xiàn)動態(tài)管理定時任務(wù)的相關(guān)知識,需要的朋友可以參考下2018-09-09spring?boot?3使用?elasticsearch?提供搜索建議的實例詳解
這篇文章主要介紹了spring?boot3使用elasticsearch提供搜索建議,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-08-08Java實現(xiàn)一鍵獲取Mysql所有表字段設(shè)計和建表語句的工具類
這篇文章主要為大家詳細介紹了如何利用Java編寫一個工具類,可以實現(xiàn)一鍵獲取Mysql所有表字段設(shè)計和建表語句,感興趣的小伙伴可以了解一下2023-05-05

java數(shù)據(jù)結(jié)構(gòu)與算法之桶排序?qū)崿F(xiàn)方法詳解