Generador de números de lotería de diseño de cursos JAVA
Tengo un código de Super Lotto que se genera en la consola pero no cuenta la probabilidad del premio. Espero que pueda ayudarte: 1. Hablemos primero de la idea: a. matrices de variables Coloque los 35 números en el área frontal y los 12 números en el área posterior respectivamente. Las variables son las longitudes b de estas dos matrices. Primero, obtenga aleatoriamente los 5 números en el área frontal: Random .nextInt (la variable. de la longitud del área frontal) para obtener el número aleatorio, busque el elemento cuyo subíndice es este número aleatorio en la primera matriz, sáquelo y colóquelo en una variable. Aquí puede determinar el formato. expresiones para determinar si es un dígito y, de ser así, complételo con 0. Luego, elimine este elemento de la matriz. Por supuesto, la variable que almacena la matriz debe restarse en 1 y luego repetir lo anterior 4 veces. obtenga 5 números no repetidos del 1 al 35. c. Igual que el anterior 2. Código adjunto SuperJoyful.javaimport java.util .ArrayList;
importar java.util.Arrays;
importar java.util.List;
importar java.util.Random;
importar java.util.regex.Matcher;
importar java.util. regex.Pattern;/**
* La siguiente es una simulación de una función de selección de números aleatorios de súper lotería, generada estrictamente por probabilidad
* @author Jack
*
*/
public class SuperJoyful {
// Declara una lista para almacenar el número del área frontal
private Listlt; Integergt; objFrontList = new ArrayListlt;
// Declara una lista para almacenar el número del área posterior
private Integergt; );
// Declara un objeto de expresión regular para que coincida si es de un solo dígito, para verificar al generar
Pattern objP = Pattern.compile("\\d");
// La cadena a operar
Matcher objM = null
String[] Front = new String[5]; p> String[] Back = new String[2]; // Inicializa el número de lotería
public void init() {
for (int i = 1; i lt; = 35 ; i) {
objFrontList.add(i);
}
para (int i = 1; i lt; = 12; i) {
objBackList.add(i);
}
} // Iniciar lotería
public void beginLottery(
) {
Random objRandom = new Random();
int nFrontCount = 35; // Número total de números del área frontal
int nBackCount = 12; / Atrás Número total de números de área // Borrar la LISTA antes de la lotería y luego inicializar
objFrontList.clear();
//System.out.println(objFrontList); p>
objBackList.clear();
//System.out.println(objBackList);
this.init();
/ **
* Genera 5 números de área frontal
*/
para (int i = 0; i lt; 5; i) {
//System.out.println("nFrontCount:" nFrontCount);
//Inicialmente hay 35 códigos de área frontal y se genera un índice aleatoriamente
int nIndex = objRandom.nextInt (nFrontCount);
// Almacena temporalmente el número seleccionado en una variable, con verificación de expresión regular
int nTemp = objFrontList.get(nIndex);
String strTemp = new Integer(nTemp).toString();
// Relaciona el número obtenido con la expresión regular
objM = objP.matcher(strTemp);
boolean flag = objM.matches();
// Si es un solo dígito, agregue ceros delante
if (flag) { p>
Frontal[i] = ("0" strTemp " ");
} else {
Frontal[i] = (strTemp " ");
}
// Elimina el número de este índice en la LISTA, porque si seleccionas uno, no lo volverás a colocar
objFrontList.remove( nIndex);
//El número total se reduce en uno
nFrontCount--;
}
Arrays.sort(Front );
para (int n = 0
; n lt; Frente.longitud; n ) {
Sistema.out.print(Frontal[n] "\t"); .out.print(" ");
/**
* Generar 2 números de área posterior
*/
para ( int i = 0; i lt; 2; i) {
//System.out.println("nBackCount:" nBackCount);
// Inicialmente hay 12 después del código de área, se genera un índice aleatoriamente
int nIndex = objRandom.nextInt(nBackCount);
// Almacena temporalmente el número seleccionado en una variable, con verificación de expresión regular
int nTemp = objBackList.get(nIndex);
String strTemp = new Integer(nTemp).toString();
// Compara el número obtenido con una expresión regular coincidencia
objM = objP.matcher(strTemp);
boolean flag = objM.matches();
// Si es un solo dígito, entonces rellenar ceros delante
if (flag) {
Back[i] = ("0" strTemp " ");
} else {
Back[i] = (strTemp " ");
}
// Elimina el número en este índice en la LISTA, porque seleccionar uno ya no lo devolverá.
objBackList.remove(nIndex);
// for(int n = 0; nlt; objBackList.size(); n ){
// System.out.println("objBackList:" objBackList.get( n ));
// }
//El número total se reduce en uno
nBackCount--;
}
Arrays.sort(Back);
para (int n = 0; n lt; Back.length; n) {
System.out.print(Volver[n] "\t");
// Ingresa después de generar una apuesta
System.out.println("");
} // Muestra el número de apuestas de lotería según sea necesario
public void outPutLottery(int vnCount) {
for (int i = 0; i lt; vnCount; i) {
this.beginLottery()
}
} /**
* @param args
*/
public static void main(String[] args) {< / p>
SuperJoyful objSJ = new SuperJoyful();
EnterConsole objEC = new EnterConsole();
// Declara un objeto de expresión regular para que coincida si es un número
Patrón objP = Pattern.compile("\\d{1,}");
// La cadena sobre la que se operará
Matcher objM = null ;
//Recibir entrada de la consola
String objTemp = (String) objEC.printConsole();
//String strTemp = (String)objTemp;
objM = objP.matcher(objTemp);
bandera booleana = objM.matches();
int nTemp = 0; > if (flag) {
nTemp = new Integer(objTemp);
} else {
System.out.println("Lo siento, solo ingresa el número ! ");
}
objSJ.outPutLottery(nTemp);
}
}EnterConsole.javaimport java.io.BufferedReader;
importar java.io.IOException;
importar java.io.InputStreamReader;
clase pública EnterConsole
{
public Object printConsole(){
System.out.print("Ingrese cuántas notas desea seleccionar aleatoriamente, confirme y presione Enter:");
BufferedReader objBR = nuevo BufferedReader(n
ew InputStreamReader(System.in));
String strValue = null;
try
{
strValue = (String)objBR .readLine();
}
catch (IOException e)
{
// TODO Bloque de captura generado automáticamente p>
e.printStackTrace();
}
devuelve strValue
}
}