JAVA 一个桶里面有白球. 黑球各 100 个
问题描述
一个桶里面有白球. 黑球各 100 个,现在按下述的规则取球:
i . 每次从桶里面拿出来两个球;
ii. 如果取出的是两个同色的球,就再放入一个黑球;
iii. 如果取出的是两个异色的球,就再放入一个白球;
问:最后桶里面只剩下一个黑球的概率是多少?
答案
1.每次操作都会减少一球,所以最后剩下黑球或者白球
2.由于白球每次操作要么不变,要么成对减少,所以最后不可能剩余一个白球,那么必然是剩余黑球了
代码
public class Test {/*** 运算逻辑:* 1.将前100个数指定为白球,后100个指定为黑球,放入set里,然后再统一放入all set里* 2.随机取两个,执行取球放球的逻辑* 3.将剩余的黑白球重新排序,再循环继续之前的取球操作* 4.黑球或者白球有一个取尽的时候结束运行* @param args*/public static void main(String[] args) {//白球 0~99Set<Integer> white = new HashSet<>();for(int i=0;i<100;i++){white.add(i);}//黑球 100~199Set<Integer> black = new HashSet<>();for(int j=100;j<200;j++){black.add(j);}//所有的球 0~199Set<Integer> all = new HashSet<>();all.addAll(white);all.addAll(black);Random random = new Random();//新增的黑球(大于199就行,防止set插入值重复)int blackCount = 200;//遍历次数int count = 1;//黑白球比较数int compareNum = 100;while (true){int first = random.nextInt(all.size());int second = random.nextInt(all.size());if(first == second) continue;//都是白球if(first<compareNum && second<compareNum){white.remove(first);white.remove(second);all.remove(first);all.remove(second);black.add(blackCount);all.add(blackCount);}//都是黑球if(first>=compareNum && second>=compareNum){all.remove(second);black.remove(second);}//一白一黑if((first<compareNum && second>=compareNum)){all.remove(second);black.remove(second);}//一黑一白if((first>=compareNum && second<compareNum)){all.remove(first);black.remove(first);}//黑球或者白球取尽时跳出循环if(black.size()==0 || white.size()==0){break;}//set重排Set<Integer> newWhite = new HashSet<>();for(int ii=0;ii<white.size();ii++){newWhite.add(ii);}white = newWhite;Set<Integer> newBlack = new HashSet<>();for(int jj=0;jj<black.size();jj++){newBlack.add(white.size() + jj);}black = newBlack;compareNum = white.size();all.clear();all.addAll(white);all.addAll(black);System.out.println("第"+count+"次,白球剩余"+white.size()+"个,黑球剩余"+black.size()+"个。");count++;}System.out.println("第"+count+"次,白球剩余"+white.size()+"个,黑球剩余"+black.size()+"个。");}
}
JAVA 一个桶里面有白球. 黑球各 100 个相关推荐
- 有红、白、黑三种球若干个,其中红、白球共25个,白、黑球共31个,红、黑球共28个,使用for循环完成计算这三种球的个数
有红.白.黑三种球若干个,其中红.白球共25个,白.黑球共31个,红.黑球共28个,使用for循环完成计算这三种球的个数(PHP) <?php //有红.白.黑三种球若干个,其中红.白球共25个 ...
- 有红、白、黑三种球若干个,其中红、白球共25个,白、黑球共31个,红、黑球共28个,这三种球各有多少个?
有红.白.黑三种球若干个,其中红.白球共25个,白.黑球共31个,红.黑球共28个,请编程求解:这三种球各有多少个? public class Test12031 { public static vo ...
- C语言:白球红球黑球
从3个红球,5个白球,6个黑球中任意取出8个作为一组,进行输出.在每组中,可以没有黑球,但必须要有红球和白球.请编程实现输出所有可能组合方式. #include<stdio.h> int ...
- 一个口袋中放有12个球,已知其中3个是红球,3个是白球,6个是黑球,现从中任选8个,问共有多少种可能的颜色搭配?请画流程图实现算法
问题 一个口袋中放有12个球,已知其中3个是红球,3个是白球,6个是黑球,现从中任选8个,问共有多少种可能的颜色搭配?请画流程图实现算法 设任取的8个球中红球为m个,白球为n个,则黑球为8-m-n个. ...
- 100个黑球和100个白球问题
100个黑球和100个白球问题 问题 思路 计算 结论推广 问题 有一个桶,里面有白球.黑球各100个,人们必须按照以下的规则把球取出来: 1.每次从桶里面拿出来两个球: 2.如果是两个同色的球,就再 ...
- js第2章基本语法 课后习题——求出1~100之间的素数、求红白黑球
<JavaScript前端开发案例教程>黑马程序员编著,中国工信出版集团,人民邮电出版社-课后习题 目录 一.填空题 二.判断题 三.选择题 四.编程题 1.请编写程序求出1~100之间的 ...
- 每周算法题(从三个红球、五个白球、六个黑球中任意取出八个球,且其中必须有白球,输出所有可能的方案,有1、2、3、4数字,组成无重复的三位数两个乒乓球队进行比赛,各出三人。甲队为a,b,c)
每周算法题 文章目录 每周算法题 一.从三个红球.五个白球.六个黑球中任意取出八个球,且其中必须有白球,输出所有可能的方案. 二.有1.2.3.4数字,组成无重复的三位数 两个乒乓球队进行比赛,各出三 ...
- 有红、白、黑三种球若干个,求红白黑球的数量
有红.白.黑三种球若干个,求红白黑球的数量 直接上代码 打印结果 (~~~~~~~~~~~~~~~~~~~~~~~~~~~~) 联系阿超 (可解疑解答,无偿) 阿超QQ:2425991616 阿超微信 ...
- C语言:三色球问题:12个中3红3白6黑,取8个求共有多少种可能
问题: 在一个口袋里放有12个球,已知其中3个红球,3个白球,6个黑球,现从中任取8个,问共有多少种可能的颜色搭配? 分析: 根据问题描述可设任取的8个球中红球为m个,白球为n个,则黑球为8-m-n个 ...
最新文章
- 实现点击空白关闭模态框
- innodb参数汇总
- 如何查看Kubernetes pod yaml文件的在线语法帮助
- SciSharpCube:容器中的SciSharp,.NET机器学习开箱即用
- linux运维、架构之路-jumpserver
- 利用WindowsAPI创建窗体(c++)
- Python 中星号的本质及其使用方式
- bzoj 1016: [JSOI2008]最小生成树计数
- 深度学习在推断阶段(inference)的硬件实现方法概述
- Xcode在 release 模式下断点调试
- PAT 乙级 1048 数字加密 (20 分)
- AWGN信道中BCH码BPSK调制的BER性能_Simulink实现
- 大白菜安装系统两种方式
- CSDN论坛如何能够获得积分呢?
- JZOJ 1266. 玉米田
- 关于如何区分Android手机是32位还是64位
- ubuntu下如何设置环境变量
- IDEA中如何设置键盘快捷键可用
- nvidia jetson nano 操作指南
- TRC丨TRC 艾美捷 1-(3,5-双(苄氧基)苯基)pent-1-en-3-one说明书