服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - Java实现抽奖算法的示例代码

Java实现抽奖算法的示例代码

2022-11-14 11:48小虚竹 Java教程

这篇文章主要为大家详细介绍了如何利用Java语言实现抽奖算法,文中的示例代码讲解详细,对我们学习Java有一定帮助,需要的可以参考一下

一、题目描述

题目: 小虚竹为了给粉丝送福利,决定在参与学习打卡活动的粉丝中抽一位幸运粉丝,送份小礼物。为了公平,要保证抽奖过程是随机的。

二、解题思路

1、把参与的人员加到集合中

2、使用Random对象获取随机数

3、把随机数当下标,获取集合中的幸运用户

三、代码详解

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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;
    }
}

Java实现抽奖算法的示例代码

四、优化抽奖算法

解题思路

随机次数太少,需要优化

需要列出所有人随机命中的次数,显示出来,比较公开公平

代码详解

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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实现抽奖算法的示例代码

到此这篇关于Java实现抽奖算法的示例代码的文章就介绍到这了,更多相关Java抽奖算法内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/shi_hong_fei_hei/article/details/124239447

延伸 · 阅读

精彩推荐
  • Java教程SpringMVC的执行过程浅析

    SpringMVC的执行过程浅析

    这篇文章主要给大家介绍了关于SpringMVC的执行过程的相关资料,文中通过图文介绍的非常详细,对大家的学习或者使用SpringMVC具有一定的参考学习价值,需...

    Alan_beijing10852021-07-19
  • Java教程Java基础教程之对象引用

    Java基础教程之对象引用

    这篇文章主要介绍了Java基础教程之对象引用,“对象引用”(object reference)是一个重要重要概念,涉及内存,需要的朋友可以参考下 ...

    junjie2162019-11-27
  • Java教程spring中AOP 注解开发示例详解

    spring中AOP 注解开发示例详解

    这篇文章主要介绍了spring中AOP注解开发的相关资料,文中介绍的很详细,需要的朋友可以参考借鉴,下面来一起看看吧。...

    橘子不酸2002020-08-12
  • Java教程IDEA 2020版本最新破解教程(可激活至2089年)

    IDEA 2020版本最新破解教程(可激活至2089年)

    这篇文章主要介绍了IDEA 2020版本最新破解教程可激活至2089年,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以...

    石墨文档22802020-09-10
  • Java教程Mybatis详解在注解sql时报错的解决方法

    Mybatis详解在注解sql时报错的解决方法

    MyBatis-Plus 是一个 Mybatis 增强版工具,在 MyBatis 上扩充了其他功能没有改变其基本功能,为了简化开发提交效率而存在,本篇文章带你看看在注解sql时所报出...

    小皮猪8872022-10-31
  • Java教程Java获取文件的类型和扩展名的实现方法

    Java获取文件的类型和扩展名的实现方法

    这篇文章主要介绍了Java获取文件的类型和扩展名的实现方法的相关资料,需要的朋友可以参考下...

    java教程网5062020-08-06
  • Java教程Java集合类中文介绍

    Java集合类中文介绍

    本文首先对Java集合类框架做了简单说明,之后对主要类和为API做了介绍:Collection、List、Set、AbstractCollection、AbstractList、AbstractSet、Iterator、ListIterator。 ...

    java教程网6002019-10-18
  • Java教程详解Java泛型之详解通配符

    详解Java泛型之详解通配符

    今天我们来继续讲解泛型中另一个非常重要的概念,就是那个“小问号”——通配符!泛型中除了用T表示泛型外,还有?这种形式。? 被称为通配符。...

    测试开发Kevin5352021-06-18