Java - Campos de manera aleatoria sin repetirse

 
Vista:

Campos de manera aleatoria sin repetirse

Publicado por Rosa (2 intervenciones) el 23/01/2020 17:23:45
La tabla productos tiene 4 campos ID_producto, ID_almacen1, ID_almacen2 y Stock. Todos los campos son enteros construir un objeto introduciendole en hardcode el campo ID_producto y los otros 3 campos de manera aleatoria entre el 1y el 10 con la particularidad de que el valor ID_almacen1 y el ID_almacen2 no se repitan
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 186
Ha disminuido su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Campos de manera aleatoria sin repetirse

Publicado por Juan (70 intervenciones) el 23/01/2020 18:06:50
1
2
3
4
5
6
7
8
public constructorClase(int id ){
    this.ID_producto = id;
    this.ID_almacen1 = (int) Math.floor(Math.random()*(10)+1);
    do{
        this.ID_almacen2 = (int) Math.floor(Math.random()*(10)+1);
    }while (ID_almacen1==ID_almacen2);
    this.Stock = (int) Math.floor(Math.random()*(10)+1);
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Campos de manera aleatoria sin repetirse

Publicado por Rosa (2 intervenciones) el 23/01/2020 21:44:10
Muchísimas gracias! Me ha servido mucho
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Campos de manera aleatoria sin repetirse

Publicado por Rodrigo (623 intervenciones) el 24/01/2020 06:54:02
Una alternativa a la solucion anterior, en que itera hasta obtener un valor distinto es no iterar en lo absoluto.
Se puede forzar a que el otro sea distinto, aun haciendo que sea aleatorio abusando del hecho que ambos numeros estan entre 1 y 10.

Para lograrlo, puedes sumarle al primer numero un numero aleatorio entre 0 y 9 y luego hacer que el numero resultante este entre 1 y 10.

1
2
int primero = (int) Math.floor(Math.random()*10+1);
int segundo = (int) Math.floor(Math.random()*9 + primero) % 10 + 1;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar