generador de números aleatorios de Java sin matrices

Soy completamente nuevo en Java y estoy trabajando en una tarea. Necesito generar 6 números aleatorios dentro del rango de 1 a 49, lo cual es simple. Sin embargo, la complicación es que los números no pueden duplicarse. Las únicas opciones que tengo para los condicionales son el ciclo while o las declaraciones if else. Las matrices y todos los demás bucles están fuera de los límites para esta asignación. Realmente podría usar algunos consejos con respecto a la logística de cómo aplicar las opciones que tengo. Me doy cuenta sin matrices, y los otros bucles que voy a tener un montón de código duplicado, pero puedo manejar eso. Solo necesito ayuda para entender esto.

Respuesta 1

Si no puede usar matrices u otras colecciones, puede crear 6 variables para guardar sus números generados.

public class Generate6Number {

public static void main(String[] args) {
    int num1 = 0;
    int num2 = 0;
    int num3 = 0;
    int num4 = 0;
    int num5 = 0;
    int num6 = 0;

    int count = 0;

    while (count < 6) {
        int numGen = (int) (Math.random() * 49);

        if (numGen != num1 &&
            numGen != num2 &&
            numGen != num3 &&
            numGen != num4 &&
            numGen != num5) {
            if (num1 == 0)
                num1 = numGen;
            else if (num2 == 0)
                num2 = numGen;
            else if (num3 == 0)
                num3 = numGen;
            else if (num4 == 0)
                num4 = numGen;
            else if (num5 == 0)
                num5 = numGen;
            else 
                num6 = numGen;

            count++;
        }
    }   

    System.out.println("Number 1: " + num1);
    System.out.println("Number 2: " + num2);
    System.out.println("Number 3: " + num3);
    System.out.println("Number 4: " + num4);
    System.out.println("Number 5: " + num5);
    System.out.println("Number 6: " + num6);

}

}
Respuesta: 2
Set<Integer> values = new HashSet<>();
Random rand = new Random();

while (values.size() <= 6) {
    int  n = rand.nextInt(50) + 1;
    values.add(n);
}
System.out.println(values);
Respuesta: 3

como barajar una carta para los primeros 6

public void shuffle() {
    int[] array = new int[49];
    for (int i = 0; i < array.length; i++) {
        array[i] = i + 1;
    }

    // we need first 6 random cards
    for (int i = 0; i < 6; i++) {
        int index = (int) (Math.random() * (( array.length - i) + 1));
        int temp = array[i];
        array[i] = array[index];
        array[index] = temp;
    }

    for (int i = 0; i < 6; i++) {
        System.out.print("[" + array[i] + "]");
    }
    System.out.println();
}
Respuesta: 4

Esto parece un ejercicio bastante extraño para intentar sin matrices. Es posible, pero no creo que sea especialmente instructivo para aprender Java, ya que es más un ejercicio de matemáticas que de programación.

Para generar 6 números aleatorios distintos en el rango 1-49, básicamente debes decidir para cada uno de esos 49 números si "elegir" o no, con la restricción de que solo elegirás 6 números. Entonces, está buscando identificar una de las choose(49, 6)combinaciones posibles.

Entonces, puedes hacerlo así:

int numToPick = 6;
for (int i = 1; i <= 49; ++i) {
  if (shouldPick(i, numToPick)) {
    System.out.println(i);
    --numToPick;
  }
}

(Usé un bucle for; pero siempre puedes reescribir un bucle for como un bucle while si eso es todo lo que puedes usar).

La pregunta es cómo implementar esa shouldPickfunción: devuelve un valor booleano verdadero que significa que debe elegirlo e imprimirlo; o falso para significar que no lo harás.

Esta será una función probabilística (es decir, usará un generador de números aleatorios), o no le dará diferentes conjuntos de números cada vez.

Las matemáticas para resolver la forma de esa función son bastante divertidas, y la implementación final es agradablemente trivial; pero no sería divertido si respondiera aquí.

(Pero puedo asegurarle que lo he implementado, solo cambiando una línea en el fragmento anterior; 2 si cuenta declarar un generador de números aleatorios).

Respuesta: 5

import static java.lang.Integer. *; import static java.lang.Long. *; public class StaticImortError {public static void main (String args []) {System.out.println (MAX_VALUE); ...

Quiero traducir una vista en un movimiento circular, basado en valores del evento táctil de los ejes x e y. Lo hice funcionar usando solo un eje, como se ve en el gif a continuación. El sitio trumpdonald.org tiene ...

Si tengo un auto de clase: Public class Car {int weight; Car () {} Public car (int weight) {this.weight = weight; }} y otro sedán de clase que hereda de Car: public ...

No puedo ver qué está mal, estoy tratando de pasar la matriz de gameBoard (¿no es esta una matriz? - ver constructor) en el método findPiece, pero dice que no es una matriz, ¿qué debería pasar aquí? ...