1. 程式人生 > >使用random來模擬雙色球中獎過程

使用random來模擬雙色球中獎過程

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;
	}
}