栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java:(游戏:豆机)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java:(游戏:豆机)

问题描述:

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

球都是从板子口落下的。每当球碰到钉子,它就有 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 0; i--)
		{
			for(int j = 0; j < slots_numbers; j++)
			{
				if(slots[j] < i)
					System.out.print(" ");
				else
					System.out.print("O");
			}
			System.out.println();
		}
		
	}
	
}

运行截图:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/785580.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号