/**
*
*/
package com.enjoy.util;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
/**
* @author Lenovo
*
*/
public class TestTicket {
/**
* 福彩3D
*/
public static void fc3D(){
int a1 = (int)(Math.random()*10);
int a2 = (int)(Math.random()*10);
int a3 = (int)(Math.random()*10);
//生成三位3D随机中奖号码;
Scanner scan = new Scanner(System.in);
System.out.println("请输入你要买的三个0-9你选择的整数号码,用空格隔开。");
int b1 = scan.nextInt();
int b2 = scan.nextInt();
int b3 = scan.nextInt();
if(b1==b2&&b1==b3){
System.out.println("你选择的是豹子直选");
if(a1==b1&&a2==b1&&a1==b1){
System.out.println("恭喜您豹子直选中奖,获得金额1040元!");
}else{
System.out.println("豹子直选--感谢您对公益事业的支持!");
}
}else{
System.out.println("请选择直选还是组选 输入1代表直选,输入2代表组选");
int c = scan.nextInt();
if(c==1){
System.out.println("你选择的是直选");
if(a1==b1&&a2==b2&&a3==b3){
System.out.println("恭喜您中奖,获得金额1040元!");
}else{
System.out.println("感谢您对公益事业的支持!");
}
}else{
System.out.println("你选择的是组选");
//中奖号假设123 则有123 132 213 312 231 321 此包含了组3组6,先判断是否中奖
if(a1==b1&&a2==b2&&a3==b3||a1==b1&&a2==b3&&a3==b2||a1==b2&&a2==b1&&a3==b3||a1==b2&&a2==b3&&a3==b1||a1==b3&&a2==b1&&a3==b2||a1==b3&&a2==b2&&a3==b1){
System.out.println("组选中奖,接下来判断组选中奖金额");
if(b1==b2||b2==b3||b1==b3){
System.out.println("这是组选3");
System.out.println("恭喜您组选3中奖,获得金额346元!");
}else{
System.out.println("这是组选6");
System.out.println("恭喜您组选6中奖,获得金额173元!");
}
}else{
System.out.println("感谢您对公益事业的支持!");
}
}
}
System.out.println("本次中奖号码为"+a1+","+a2+","+a3);
}
/**
* 福彩3D
*/
public static void generateFc3D(){
int a1 = (int)(Math.random()*10);
int a2 = (int)(Math.random()*10);
int a3 = (int)(Math.random()*10);
System.out.println("福彩3D号码为:"+a1+","+a2+","+a3);
}
/**
* 快乐8选10随机数字组合
* @return
*/
public static List<Integer> generateRandomNumbers() {
List<Integer> allNumbers = new ArrayList<>();
for (int i = 1; i <= 80; i++) {
allNumbers.add(i);
}
Collections.shuffle(allNumbers);
List<Integer> selectedNumbers = new ArrayList<>();
for (int i = 0; i < 10; i++) {
selectedNumbers.add(allNumbers.get(i));
}
Collections.sort(selectedNumbers);
return selectedNumbers;
}
/***
* 取得范围内的随机数
* @param min
* @param max
* @return
*/
public static int getRandInteger(int min, int max) {
int rt = 0;
try {
Random random = new Random();
rt = random.nextInt(max - min + 1) + min;
return rt;
} catch (Exception e) {
System.out.println("Get random error");
return -1;
}
}
/**
* 大乐透方案代码
*/
public static void dltPolicy() {
//定义变量装7组大乐透彩票号码
ArrayList<Integer> dltNumberArray = new ArrayList<>();
//校验前区随机号码是否重复
HashMap<Integer, Integer> frontArea = new HashMap<>();
//校验后区随机号码是否重复
HashMap<Integer, Integer> endArea = new HashMap<>();
Integer front = getRandInteger(1, 35);
frontArea.put(front, 0);
dltNumberArray.add(front);
Integer end = 0;
for (int i = 0; i < 34; i++) {
if ((i + 1) % 5 == 0 && i < 33) {
for (int j = 0; j < 2; j++) {
end = getRandInteger(1, 12);
while (endArea.get(end) != null) {
end = getRandInteger(1, 12);
}
endArea.put(end, 0);
dltNumberArray.add(end);
}
}
front = getRandInteger(1, 35);
while (frontArea.get(front) != null) {
front = getRandInteger(1, 35);
}
frontArea.put(front, 0);
dltNumberArray.add(front);
if (i == 33) {
end = getRandInteger(1, 12);
endArea.put(end + 12, 0);
dltNumberArray.add(end);
while (endArea.get(end + 12) != null) {
end = getRandInteger(1, 12);
}
dltNumberArray.add(end);
}
}
//不重复数字验证 可以放开以下代码行注释
//Collections.sort(dltNumberArray);
//System.out.println(dltNumberArray);
for (int i = 0; i < 5; i++) {
List<Integer> nums = dltNumberArray.subList(i * 7, 7 * (i + 1));
List<Integer> fronts = nums.subList(0, 5);
List<Integer> ends = nums.subList(5, 7);
System.out.println("前区:" + fronts + "后区:" + ends);
}
}
/**
* 生成红球
* @param count:数量
* @param range:最大球数值
* @return int[]
*/
public static int[] generateRedBalls(int count, int range) {
Random random = new Random();
int[] arr = new int[count];
boolean[] used = new boolean[range+1];
for (int i = 0; i < count; i++) {
int num = random.nextInt(range) + 1;
while (used[num]) {
num = random.nextInt(range) + 1;
}
arr[i] = num;
used[num] = true;
}
return arr;
}
/**
* 生成蓝球
* @param range:最大球数值
* @return int
*/
public static int generateBlueBall(int range) {
Random random = new Random();
return random.nextInt(range) + 1;
}
public static void main(String[] args) {
System.out.println("福彩数字组合===============>>>>>>>");
for (int i = 0; i < 4; i++) {
generateFc3D();
}
System.out.println("快乐8选10随机数字组合===============>>>>>>>");
for (int i = 0; i < 2; i++) {
List<Integer> numbers = generateRandomNumbers();
System.out.println("快乐8选10随机数字组合: " + numbers);
}
System.out.println("双色球===============>>>>>>>");
for (int i = 0; i < 4; i++) {
int[] redBalls = generateRedBalls(6, 33);
int blueBall = generateBlueBall(16);
Arrays.sort(redBalls);
System.out.print("红球: ["+redBalls[0]+","+redBalls[1]+","+redBalls[2]+","+redBalls[3]+","+redBalls[4]+","+redBalls[5]+"]蓝球:["+blueBall+"]");
System.out.println();
}
System.out.println("大乐透===============>>>>>>>");
dltPolicy();
}
}