1.15.综合练习2-带有概率的随机点名

原神抽卡点名程序:从零搭建随机点名器与抽卡动画实现 随机点名器是一种基于随机算法从名单中抽取元素的工具,其核心原理是利用伪随机数生成器实现等概率或加权抽取。在技术价值上,它结合文件读写与图形界面,可扩展为带动画的抽卡模拟器。典型应用场景包括课堂点名、社群抽奖及编程练手。实现时需注意UTF-8编码与txt文件路径处理,避免乱码和文件找不到的问题。本文以原神抽卡点名程序为例,详细拆解随机算法、抽卡动画及编码路径避坑指南,帮助读者快速搭建一个可运行的本地抽卡工具。 阅读详情

题目二:

分析:

提到概率,其中包含了随机,随机通常与Random类有关,但本例中Random类不能直接用,因为Random类生成的随机数是随机点,比如在1到20中随机抽取一个数,此时随机抽取到13,这里的13表示的是数字13即随机点,而概率是随机面,在本题中要的是随机面:

要想解决本例中随机面即概率的问题,可以在集合中添加7个1和3个0(总共就是10个数),此时7个1在集合中占70%,3个0在集合中占30%,然后可以把集合中的1和0都打乱顺序,再从这个集合中抽1或0,此时抽中1的概率为70%,抽中0的概率为30%

->如果抽中了1,就在存储男生的集合里随机抽取一个男生姓名;如果抽中了0,就在存储女生的集合里随机抽取一个女生姓名

->此时抽中男生的概率为70%,抽中女生的概率为30%。

注:题目的要求是70%的概率随机到男生,30%的概率随机到女生,这里概率针对的是男生和女生,和男生、女生的姓名无关,因此在满足题目要求下对男生、女生的姓名进行随机抽取是不影响本题的

解答:

对于第四步从list集合中随机抽取0或者1,由于每一个索引上抽中1的概率都为70%,抽中0的概率都为30%,所以随机抽取一个索引是可以的:

package com.itheima.a06test;
​
import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;
​
public class Test2 {
    public static void main(String[] args) {
        Random r = new Random();
        //1.创建集合,存储0和1,用于表示概率
        ArrayList<Integer> list=new ArrayList<>();
​
        //2.添加数据
        Collections.addAll(list,1,1,1,1,1,1,1);
        Collections.addAll(list,0,0,0);
​
        //3.打乱集合中的数据
        Collections.shuffle(list);
​
        //4.从list集合中随机抽取0或者1
        int index = r.nextInt(list.size());
        int number = list.get(index);
        System.out.println(number);
​
        //5.创建两个集合分别存储男生和女生的名字
        ArrayList<String> boyList=new ArrayList<>();
        ArrayList<String> girlList=new ArrayList<>();
​
        //6.添加学生
        Collections.addAll(boyList,"范闲", "范建", "范统", "杜子腾",  "宋合泛", "侯笼藤", "朱益群", "朱穆朗玛峰"); //男生
        Collections.addAll(girlList,"杜琦燕", "袁明媛","李猜","田蜜蜜"); //女生
​
        //7.判断此时是从boyList集合中抽取还是从girlList集合中抽取
        if(number==1){
            //从boyList集合中抽取
            int boyIndex = r.nextInt(boyList.size());
            String name = boyList.get(boyIndex);
            System.out.println(name);
        } else if (number == 0) {
            //从girlList集合中抽取
            int girlIndex = r.nextInt(girlList.size());
            String name = girlList.get(girlIndex);
            System.out.println(name);
        }
    }
}

​

注:上述代码中因为boyList.get(boyIndex)和girlList.get(girlIndex)不一样,所以 boyList.get(boyIndex)和girlList.get(girlIndex)可以赋值给同一个变量名即本代码里的name。

对于第四步从list集合中随机抽取0或者1,也可以不使用随机索引的方法,因为存储0和1的list集合已经被打乱,满足了抽中1的概率为70%,抽中0的概率为30%,因此这里固定获取list集合某一索引如0索的元素是可以的,理由是每一个索引上抽中1的概率都为70%,抽中0的概率都为30%:

package typeOfTest;
​
import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;
​
public class Test4 {
    public static void main(String[] args) {
        Random r = new Random();
        //1.创建集合,存储0和1,用于表示概率
        ArrayList<Integer> list=new ArrayList<>();
​
        //2.添加数据
        Collections.addAll(list,1,1,1,1,1,1,1);
        Collections.addAll(list,0,0,0);
​
        //3.打乱集合中的数据
        Collections.shuffle(list);
​
        //4.从list集合中固定获取某一索引如0索引上的元素
        /*由于存储0和1的list集合已经被打乱,满足了抽中1的概率为70%,抽中0的概率为30%,
          因此这里固定获取list集合某一索引如0索引的元素也是可以的,
          因为每一个索引上抽中1的概率都为70%,抽中0的概率都为30%*/
        int number = list.get(0);
        System.out.println(number);
​
        //5.创建两个集合分别存储男生和女生的名字
        ArrayList<String> boyList=new ArrayList<>();
        ArrayList<String> girlList=new ArrayList<>();
​
        //6.添加学生
        Collections.addAll(boyList,"范闲", "范建", "范统", "杜子腾",  "宋合泛", "侯笼藤", "朱益群", "朱穆朗玛峰"); //男生
        Collections.addAll(girlList,"杜琦燕", "袁明媛","李猜","田蜜蜜"); //女生
​
        //7.判断此时是从boyList集合中抽取还是从girlList集合中抽取
        if(number==1){
            //从boyList集合中抽取
            int boyIndex = r.nextInt(boyList.size());
            String name = boyList.get(boyIndex);
            System.out.println(name);
        } else if (number == 0) {
            //从girlList集合中抽取
            int girlIndex = r.nextInt(girlList.size());
            String name = girlList.get(girlIndex);
            System.out.println(name);
        }
    }
}
​

​

别再手动摇号了!用Excel的RAND函数,5分钟搞定一个公平的随机点名器(附F9键动态效果) 本文详细介绍了如何利用Excel的RAND函数快速构建公平高效的随机点名系统,适用于课堂、会议及活动场景。通过RAND函数生成随机数,结合MAX和INDEX+MATCH函数实现动态匹配,并利用F9键创造视觉滚动效果。文章还提供了权重分配、异常处理及大型活动优化方案,帮助用户5分钟内完成专业级抽签工具制作。 阅读详情

相关推荐

c#课程设计---猜猜看游戏

1:游戏要求 1. 随机显示 一个名字 与 若干张相片(如3张),选择正确的相片。 2. 记录老师对每个学生的认识概率P,并根据认识概率,确定“猜猜看”游戏中学生出现的频率。           认识概率P = 识别的准确次数/(识别的准确次数+识别的错误次数 a)   原则1:认识概率 高的学生,在猜猜看游戏中出现的频率相对低一些。 b)   原则2:认识概率 低的学生,在猜猜看游戏中

guojingmei的专栏 2110

day25-阶段项目(综合练习&doudizhu游戏)

按照斗地主的规则,完成洗牌发牌的动作。具体规则:使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。

qq_63763836的博客 786

【Java学习】第24节:可变参数、集合工具类&综合练习

Java是一种广泛使用的编程语言,由Sun Microsystems(现在是Oracle Corporation)首次推出。它是一种跨平台的编程语言,意味着您可以编写一次代码,然后在多个不同的计算机系统上运行,而无需对其进行修改。Java被广泛用于开发各种类型的应用程序,包括企业级应用、移动应用、Web应用、游戏等。

m0_46013789的博客 1536

Day32-Java基础之可变参数和综合练习

按照斗地主的规则,完成洗牌发牌的动作。具体规则:使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。

m0_46053885的博客 895

Android课堂点名系统开发:SQLite、RecyclerView与随机点名算法实战

在移动应用开发中,数据持久化与列表渲染性能是构建高效工具类App的两大基石。SQLite作为Android内置的轻量级关系型数据库,以零配置和标准SQL支持成为本地数据存储的首选;而RecyclerView配合DiffUtil则能实现列表的高效局部刷新,避免全局重绘带来的卡顿。当业务逻辑涉及随机抽取时,Fisher-Yates洗牌算法通过打乱序列保证每次抽取的公平性与不重复性。这些技术共同支撑起课堂考勤这一典型场景:教师需要在一两分钟内完成点名,并自动生成可追溯的出勤记录。本文以基于Android的课堂点名

weixin_33585822的博客 312

[漏洞剖析]JeecgBoot queryFieldBySql注入与JDBC连接滥用:从内存马植入到RCE的完整攻击链

本文深度剖析了JeecgBoot框架中queryFieldBySql接口的SQL注入漏洞及其引发的完整攻击链。攻击者利用该漏洞,通过Freemarker SSTI植入隐蔽的内存马,并进一步滥用JDBC连接测试功能,借助H2数据库特性实现远程命令执行(RCE),揭示了低代码平台中功能滥用与安全配置疏忽带来的严重风险。

weixin_29232121的博客 115

day25可变参数&综合练习

按照斗地主的规则,完成洗牌发牌的动作。具体规则:使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。

WU3087676106的博客 249

OpenCV透视变换实战:5分钟搞定歪斜证件照矫正(附完整代码)

本文详细介绍了如何使用OpenCV的透视变换技术快速矫正歪斜证件照,包含完整的Python代码实现。通过特征检测、坐标计算和矩阵变换三个核心步骤,5分钟内即可将手机拍摄的歪斜图像自动矫正为专业级证件照,大幅提升图像处理效率。

weixin_29094979的博客 482

day25-可变参数&综合练习

按照斗地主的规则,完成洗牌发牌的动作。具体规则:使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。

fkx20040610的博客 108

ChatGPT and Claude国内使用站点

这篇博客介绍了不同的AI聊天平台和定价信息,主要对比了ChatGPT和Claude两款产品。文章列出了多个提供聊天服务的AI平台,包括RawChat、ChatGPTPlus、ChatOpens、Wildcard和2233.ai等,并提供了每个平台的网页链接和定价详情。特别关注了Claude平台,介绍了其普通账号与会员账号的不同,以及相关的定价信息。此外,还提到了一些虚拟卡定价和服务细节,为用户选择合适的AI服务提供了多种参考。

nisidjndn的博客 1万+

基于STM32L4XX、HAL库的E180-ZG120B ZigBee模块驱动程序设计

/ 频率: 470MHz, SF7, BW125kHz, CR4/5, 功率14dBm。// 检查是否收到完整响应(根据实际情况调整)// 每5秒发送一次。PB0 <---> AUX (可选,用于状态检测)// 实际发送命令可能需要根据模块AT指令集调整。PC13 <---> RESET (可选)// 处理接收到的数据。// 缓冲区满,从头开始。// 其他必要的HAL库初始化代码...// 初始化E180模块。// 启动UART接收。// 如果需要等待响应。// 配置LoRa参数。

zhusl6688的博客 381

从零开始学习 Java:简单易懂的入门指南之可变参数及Collections类(二十五)

可变参数、Collections类、斗地主小游戏

m0_59230408的博客 1825

PyTorch生成式人工智能(25)——基于Transformer实现机器翻译

不同于循环神经网络 (RNN) 按顺序处理数据,Transformer 以并行的方式处理输入数据(例如句子)。这种并行处理提高了效率,但并未使其能够识别输入的顺序。为了解决这个问题,Transformer 向输入的词嵌入中添加了位置编码。这些位置编码是分配给输入序列中每个位置的独特向量,其维度与输入词嵌入对齐。本节将以英语到法语的翻译为例,通过介绍如何训练 Transformer 模型将英语句子转换为法语,深入理解 Transformer 的架构及自注意力机制的运作方式。

盼小辉丶的博客 2759

Java基础15:可变参数、Collection类、集合综合练习

可变参数、Collection类、集合综合练习

码砖师傅的博客 338

【Unity 实用工具篇】| Unity中 实现背景模糊效果,简单易用

背景模糊 是一个很实用的功能,它可以帮助游戏在视觉上有更好的专注力和表现力。 实现模糊的种类和方式有很多种,大家自行选择适合自己的就可以了。 下面一起来看下本文实现背景模糊的效果和使用方式吧!

努力前行,总会成为自己心中的那道光 4万+

VTK:vtkAssembly用法实战

VTK:vtkAssembly用法实战程序输出程序完整源代码 程序输出 程序完整源代码 #include <vtkActor.h> #include <vtkAssembly.h> #include <vtkAxesActor.h> #include <vtkCubeSource.h> #include <vtkNamedColors.h> #include <vtkNew.h> #include <vtkOrientation

希望我的博客,能帮上你解决学习中工作中所遇到的问题 936

day25-可变参数&综合练习(斗地主游戏)

按照斗地主的规则,完成洗牌发牌的动作。具体规则:使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。

2401_89213165的博客 731

HyperLynx(二十二)DDR(五)DDRx总线时序模型设计

DDR3 的数据选通信号与时钟信号的频率是一样的,在数据选通信号写操作时,控制器典型的输出方式是数据选通信号边沿与时钟近似对齐。该界面中显示了所有需要编辑的参数,包括地址/命令信号的时序、控制信号的时序、读和写操作的数据选通和数据信号时序、写操作的数据选通和数据掩码信号时序,以及建立和保持时间的降额参数。由于DDRx总线对时序的要求非常严格,随着速率的提升,时序的要求会更高。反之也是一样的,如果数据选通信号的上升沿在时钟信号上升沿的后面到达 DRAM,那么数据选通信号的下降沿就会在时钟信号的前面到达。

小幽余生不加糖 1938

Python实现原神抽卡点名程序:公平随机算法与动画还原

随机点名与抽卡机制结合,本质是加权轮询与洗牌算法在课堂互动中的工程实践。通过公平随机算法保证短期不重复与长期均匀分布,利用角色映射与动画渲染技术还原抽卡视觉反馈,提升参与感。该方案适用于课堂点名、直播选人、活动抽奖等场景,技术门槛低且可扩展性强。本文以原神抽卡点名程序为例,详解从随机算法、角色映射到pygame动画实现的全过程,并分享中文乱码、动画卡顿等常见坑的解决方案。

weixin_34167819的博客 259

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Python打造可自定义随机点名抽签工具:从核心算法到GUI实战

随机化是计算机科学和数据处理中的基础概念,它通过算法模拟不确定性,为公平决策、任务分配和样本选择等场景提供技术支持。其核心原理通常基于伪随机数生成器,通过种子值产生看似随机、实则可复现的序列。在工程实践中,随机化技术广泛应用于A/B测试、负载均衡、游戏开发及模拟仿真等领域,其价值在于以可控的方式引入不确定性,从而优化流程或创造公平环境。本文聚焦于一个典型的轻量级应用场景——随机点名与抽签,并深入探讨如何利用Python的random和numpy库构建一个高度可定制、支持权重分配与名单管理的本地化工具。通过结

weixin_30333885的博客 511

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Java学习_17_集合综合练习(待更新)

博客仅记录个人学习进度和一些查缺补漏。学习内容:BV17F411T7Ao部分内容因没有学到,等待后续更新基本都是集合的运用,包括集合的排序,比较器的书写规则,lambda表达式的熟悉。总体来说都是熟练了就很简单,纯工具。

qq_41136689的博客 637

javase__进阶 day12 可变参数

按照斗地主的规则,完成洗牌发牌的动作。具体规则:使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。

m0_73158362的博客 340

可变参数&综合练习&斗地主游戏

按照斗地主的规则,完成洗牌发牌的动作。具体规则:使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。

2501_93641569的博客 153

2018.09.15点名器(简单dp)

描述 Ssoier在紧张的学习中,杜老师每天给他们传授精妙的知识。 杜老师为了活跃气氛,设计了一个点名器,这个点名器包含一个长度为M的数组(下标1开始),每个元素是一个oier的名字,每次点名的时候,点名器会等概论随机生成一个1到M的整数,对应的人就要回答问题。当然杜老师有喜欢的人,他会故意让一些名字重复出现以增加某些人被点中的概率。 zgs感觉不是很好,他不希望被点中。他找到杜老师,不过杜...

苟为蒟蒻又何妨 664

可变参数、Collections工具类、Collection系列集合的综合案例

按照斗地主的规则,完成洗牌发牌的动作。具体规则:使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。

m0_56307146的博客 177
上一篇: 1.4.Stream流-Stream流的终结方法
下一篇: 2.1.方法引用概述
巧克力拌面
博客等级 码龄3年 1153粉丝 282原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值