欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用random来模拟双色球中奖过程

程序员文章站 2024-02-02 15:12:58
...
package testjava;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

/**
 * 
 * @ClassName:  DoubleChromosphere   
 * @Description:TODO(这里用一句话描述这个类的作用)   
 * @author: 清之羽 
 * @date:   2018年8月14日 下午8:21:26   
 * 实现双色球中奖过程的模拟
 * @Copyright: 2018 All rights reserved.
 */
public class DoubleChromosphere 
{
	public static void main(String[] args) 
	{
		DoubleChromosphere doubleChromosphere=new DoubleChromosphere();
//	分别获取红色球和蓝色球的开奖号
		List<Integer> redAwardNumber=doubleChromosphere.getRedAwardNumber();
		List<Integer> blueAwardNumber=doubleChromosphere.getBlueAwardNumber();
//	分别获取红色球和蓝色球的**号
		List<Integer> redBettingNumber=doubleChromosphere.getRedBettingNumber();
		List<Integer> blueBettingNumber=doubleChromosphere.getBlueBettingNumber();
		int redWinningBall=doubleChromosphere.getRedBallWinningBall(redAwardNumber, redBettingNumber);
		int blueWinningBall=doubleChromosphere.getBlueBallWinningBall(blueAwardNumber, blueBettingNumber);
		System.out.println("中奖等级为:");
		System.out.println("红球:"+redWinningBall+",篮球:"+blueWinningBall);
	}
//	当前方法用于存放红色球和蓝色球的开奖号
	public List<Integer> getRedAwardNumber()
	{
		List<Integer> redAwardNumber=new ArrayList<Integer>();
		Random random=new Random(10);
		while(redAwardNumber.size()<6)
		{
//			生成一个1-33 之间的任意一个随机数字,作为红色球的开奖号
			Integer redNumber=random.nextInt(32)+1;
			if (redAwardNumber.contains(redNumber)) 
			{
				continue;
			}
			redAwardNumber.add(redNumber);
		}
		Collections.sort(redAwardNumber);
		System.out.println("红色球的开奖号依次为:");
		for (Integer integer : redAwardNumber) {
			System.out.print(integer+" ");
		}
		System.out.println();
		return redAwardNumber;
	}
//	获得蓝色球的开奖号
	public List<Integer> getBlueAwardNumber()
	{
		Random random=new Random(8);
//		获取1-16当中的任意一个数字作为开奖号
		Integer buleNumber=random.nextInt(16)+1;
		List<Integer> blueAwardNumber=new ArrayList<Integer>();
		blueAwardNumber.add(buleNumber);
		System.out.println("蓝色球当中的开奖号为:");
		System.out.println(blueAwardNumber.get(0));
		return blueAwardNumber;
	}
//	获得用户所购买的红色球**号码betting(**)
	public List<Integer> getRedBettingNumber()
	{
		List<Integer> redBettingNumber=new ArrayList<Integer>();
//		当不设定随机数种子的时候每一次所进行生成的随机数对象都是不相同的
		Random random=new Random();
		while(redBettingNumber.size()<6)
		{
//			生成一个1-33 之间的任意一个随机数字,作为用户的**号
			Integer redNumber=random.nextInt(32)+1;
			if (redBettingNumber.contains(redNumber)) 
			{
				continue;
			}
			redBettingNumber.add(redNumber);
		}
		Collections.sort(redBettingNumber);
		System.out.println("红色球的**号依次为:");
		for (Integer integer : redBettingNumber) {
			System.out.print(integer+" ");
		}
		System.out.println();
		return redBettingNumber;
	}
//	获得蓝色球的**号
	public List<Integer> getBlueBettingNumber()
	{
		Random random=new Random();
//		获取1-16当中的任意一个数字作为开奖号
		Integer buleNumber=random.nextInt(16)+1;
		List<Integer> blueBettingNumber=new ArrayList<Integer>();
		blueBettingNumber.add(buleNumber);
		System.out.println("蓝色球当中的**号为:");
		System.out.println(blueBettingNumber.get(0));
		return blueBettingNumber;
	}
//	判断红色球的中奖数目
	public int getRedBallWinningBall(List<Integer> redAwardNumber,List<Integer> redBettingNumber)
	{
		int number=0;
		for(int i=0;i<redBettingNumber.size();i++)
		{
			Integer redNumber=redBettingNumber.get(i);
			if(redAwardNumber.contains(redNumber))
				number++;
		}
		System.out.println("红色球当中**号与中奖号相同的小球数为:");
		System.out.println(number);
		return number;
	}
//	判断蓝色球的中奖数目
	public int getBlueBallWinningBall(List<Integer> blueAwardNumber,List<Integer> blueBettingNumber)
	{
		int number=0;
		for(int i=0;i<blueBettingNumber.size();i++)
		{
			Integer blueNumber=blueBettingNumber.get(i);
			if(blueAwardNumber.contains(blueNumber))
				number++;
		}
		System.out.println("蓝色球当中**号与中奖号相同的小球数为:");
		System.out.println(number);
		return number;
	}
}