问题描述:

豆机,也称为梅花瓶或高尔顿瓶,它是一个用来做统计实验的设备,是用英国科学家瑟弗兰克斯高尔顿的名字来命名的。它是一个三角形状的均匀放置钉子(或钩子)的直立板子,如下图所示。

球都是从板子口落下的。每当球碰到钉子,它就有 50%的机会落向左边或落向右边。在板子底部的槽子中都会累积一堆球。编写程序模拟豆机。程序应该提示用户输入球的个数以及机器的槽数。打印每个球的路径模拟它的下落。例如:在图 b 中球的路径是LLRRLLR,而在图 c 中球的路径是 RLRRLRR。使用条形图显示橹中球的最终储备量。下面是程序的一个运行示例:
提示:创建一个名为 slots 的数组。数组 slots 中的每个元素存储的是一个槽中球的个数。每个球都经过一条路径落入一个槽中。路径上 R 的个数表示球落下的槽的位置。例如:对于路径 LRLRLRR 而言,球落到 slots[4]中,而对路径 RRLLLLL 而言,球落到 slots[2]中。

代码:

import java.util.Random;
import java.util.Scanner;public class Test20 {public static void main(String[] args) {Scanner in = new Scanner(System.in);System.out.print("Enter the number of balls to drop:");int balls_number = in.nextInt();                   //定义小球数量System.out.print("Enter the number of slots in the bean machine:");int slots_number = in.nextInt();                  //定义机器槽数String[][] track = new String[balls_number][slots_number-1];int[] position = new int[balls_number];               //定义数组存储小球最终位置,存储小球右偏次数track = trackOfBalls(balls_number,slots_number,position);int[] slots = resultOfSlots(slots_number,position);   //slots统计每个槽掉落的小球数printTrack(track);printOfSlots(balls_number,slots_number,slots);in.close();}//返回0表示左,1表示右public static int isLeftOrRight() {Random r = new Random();return r.nextInt(2);}//判断小球的下落情况public static String[][] trackOfBalls(int balls_number,int slots_number,int[] position){String[][] track = new String[balls_number][slots_number-1]; //定义数组存储小球下落轨迹for(int i = 0; i < balls_number; i++)                   //外循环表示有多少个小球{for(int j = 0; j < slots_number - 1; j++)           //内循环表示每个小球的下落轨迹{if(isLeftOrRight() == 0){track[i][j] = "L";}else{track[i][j] = "R";position[i]++;}}}return track;}//输出轨迹public static void printTrack(String[][] track) {for(int i = 0;i < track.length; i++){for(int j =0; j < track[i].length; j++){System.out.print(track[i][j]);}System.out.println();}}//统计每个槽掉落的小球数public static int[] resultOfSlots(int slots_number,int[] position) {int[] slots = new int[slots_number];       //slots统计每个槽掉落的小球数for(int i = 0; i < position.length; i++){for(int j= 0; j < slots_number; j++){if(j == position[i]){slots[j]++;break;}}}//for(int i=0;i<slots.length;i++)//  System.out.print(slots[i]+" ");//System.out.println();return slots;}//输出每个槽中小球的情况public static void printOfSlots(int balls_number,int slots_numbers,int[] slots) {for(int i = balls_number; i > 0; i--){for(int j = 0; j < slots_numbers; j++){if(slots[j] < i)System.out.print(" ");elseSystem.out.print("O");}System.out.println();}}}

运行截图:

Java:(游戏:豆机)相关推荐

  1. 现在智能机怎么玩Java游戏,教你如何用安卓机玩JAVA老游戏

    手机游戏早已经今非昔比,但有的情怀永远只属于过去,如何才能在现在的智能机中重温非智能时代的JAVA老游戏? 今天就来为大家介绍一款可以在安卓机玩JAVA游戏的小工具吧. 开启后,点击右下角的添加按钮, ...

  2. 安卓如何玩java游戏_情怀满满!教你如何用安卓机玩JAVA老游戏

    如果你接触手机比较早,应该会玩过运行JAR程序的JAVA非智能机. 在诺基亚S40.索爱K系列流行的年代,无数小伙伴沉迷于JAVA游戏不能自拔,JAVA游戏在很多人的青春中都留下了浓墨重彩的一笔. 手 ...

  3. 安卓java游戏_情怀满满!教你如何用安卓机玩JAVA老游戏

    [PConline 应用]如果你接触手机比较早,应该会玩过运行JAR程序的JAVA非智能机.在诺基亚S40.索爱K系列流行的年代,无数小伙伴沉迷于JAVA游戏不能自拔,JAVA游戏在很多人的青春中都留 ...

  4. 老年机能玩的java游戏_情怀满满!教你如何用安卓机玩JAVA老游戏

    [PConline 应用]如果你接触手机比较早,应该会玩过运行JAR程序的JAVA非智能机.在诺基亚S40.索爱K系列流行的年代,无数小伙伴沉迷于JAVA游戏不能自拔,JAVA游戏在很多人的青春中都留 ...

  5. java keypad game,玩机技巧:手写笔控制JAVA游戏

    手写笔控制JAVA游戏 1.进入JAVA游戏页面: 2.点下拉菜单键,选择Options-JavaPreferences. 3.进入设置菜单后:第一项(Preferences)设置为:Applicat ...

  6. 【JAVA资料免费下载】158个JAVA免豆精品资料汇总——下载目录

    2019独角兽企业重金招聘Python工程师标准>>> 应广大网友要求,最近小弟整理了一批免积分下载的Java优质资料,因资料众多,一一将资料上传上来需要时间,先将下载目录分享给大家 ...

  7. Java游戏开发 —— 象棋

    公司来活了,忙,暂时没空写完象棋AI这块,等以后再完善吧! 引言: 象棋的代码实现有点复杂,尤其是计算机的AI算法,在网上找了很多资料,费了好半天劲才弄明白其实现的原理,真的挺开阔思路的,很有意思! ...

  8. Java游戏开发框架LGame-0 2 8版发布(含JavaSE及Android版,已有文档)

    LGame是LoonFramework框架的一部分,也可简称做"LF"或"Loon". LGame框架的创立初衷在于,构建一个高效且完善的Java游戏开发体系, ...

  9. 【Java游戏开发合集】毕业设计(附源码+资料+课件)

    为正在准备毕业设计的小伙伴们以及想自学一些Java练手项目,小编终于整理出了本套视频课程(附源码+资料+课件),快来白嫖吧!!! 视频教程链接: 全站最全Java游戏合集!毕业设计!(附源码课件)8款 ...

  10. Java游戏开发 —— 五子棋

    引言: 五子棋的代码实现很简单,难的是计算机的AI算法,在网上找了很多资料,费了好半天劲才弄明白其实现的原理,真的挺开阔思路的,很有意思! 思路: 1.创建主窗口,加载菜单及游戏面板. 2.在游戏面板 ...

最新文章

  1. [转] mongoose学习笔记(超详细)
  2. 垃圾回收器机制(一):对象存活及强,弱等各种引用辨析
  3. SD-WAN和MPLS有什么用途?
  4. Win10修改防火墙入站规则
  5. 【算法设计与分析】Dijskra算法代码:Java版
  6. 非常全的VS Code快捷键
  7. Alpha阶段-个人总结
  8. 小米pro gtx右下角存在图标显示不全
  9. 2017百度之星程序设计大赛 - 资格赛
  10. OBJ格式模型详细介绍
  11. Java类和对象(重点详解)
  12. 用把百分数转换成a,b,c,d,e等级
  13. S3C2410,ARM920T,试题总结
  14. 霹雳吧啦Wz语义分割学习笔记P1
  15. Codeforces Round #622 (Div. 2) C2. Skyscrapers (hard version)(单调栈)
  16. 央视“315晚会”上曝光的“网络水军”要怎么从技术上防范
  17. ci定位 lac,基站定位LAC,CID转经纬度
  18. numpy.random.seed()用法详解
  19. FlexRay™ 协议控制器 (E-Ray)-04
  20. 如何合并音频文件图文教程

热门文章

  1. Towards End-to-End Prosody Transfer for Expressive Speech Synthesis with Tacotron
  2. win7 增加Internet时间服务器
  3. 计算机网页的设计与应用的前言,网页设计前言.ppt
  4. 域名注册好了怎么使用 注册域名后需要备案吗
  5. 怎么用PDF裁剪工具来裁剪PDF页面
  6. PCA(主成分分析法)使用情景及排序企业综合实力示例
  7. Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'的解决办法
  8. 华为手机如何更新鸿蒙系统_华为鸿蒙系统怎么升级?升级鸿蒙系统步骤
  9. Python 断言的使用
  10. Spring Security Oauth2 JWT、第三方登录、单点登录讲解,并使用Oauth2.0结合微服务进行单点登录