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

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