Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Sorteando libros

function sortearLibro() { let libroElegido; let cantidadDeLibrosSorteados = listaDeLibrosSorteados.length;

if (cantidadDeLibrosSorteados == numeroLimite) {
    // Reiniciar la lista de libros sorteados
    listaDeLibrosSorteados = [];
}

// Generar un número aleatorio entre 0 y el número límite actual
libroElegido = parseInt(Math.random() * numeroLimite);

// Verificar si el libro ya ha sido sorteado
while (listaDeLibrosSorteados.includes(libroElegido)) {
    libroElegido = parseInt(Math.random() * numeroLimite);
}

// Agregar el libro elegido a la lista de libros sorteados
listaDeLibrosSorteados.push(libroElegido);

// Devolver el libro elegido
return listaDeLibros[libroElegido];

}

content_copy Explicación:

Las otras alternativas no son correctas debido a los siguientes errores:

Alternativa 1: No maneja la situación en la que todos los libros han sido sorteados. Si se llega a ese punto, la función seguirá devolviendo el mismo libro o un libro ya sorteado.

Alternativa 3: Accede directamente al elemento listaDeLibros[numeroLimite], lo que significa que siempre se devolverá el mismo libro, el que está en la posición numeroLimite de la lista.

La alternativa correcta implementa la lógica de la siguiente manera:

Inicializa variables:

libroElegido: Almacena el índice del libro elegido. cantidadDeLibrosSorteados: Almacena la cantidad de libros sorteados hasta el momento. Verifica si se ha llegado al límite:

Si la cantidad de libros sorteados es igual al número límite, reinicia la lista de libros sorteados. Genera un número aleatorio:

Genera un número aleatorio entre 0 y el número límite actual utilizando parseInt(Math.random() * numeroLimite). Verifica si el libro ya ha sido sorteado:

Utiliza un ciclo while para verificar si el libro elegido ya ha sido sorteado (listaDeLibrosSorteados.includes(libroElegido)). Si es así, genera un nuevo número aleatorio hasta encontrar uno que no haya sido sorteado. Agrega el libro elegido a la lista:

Agrega el índice del libro elegido a la lista de libros sorteados (listaDeLibrosSorteados.push(libroElegido)). Devuelve el libro elegido:

Obtiene el libro elegido a partir del índice (listaDeLibros[libroElegido]) y lo devuelve. Esta implementación asegura que todos los libros tengan la misma probabilidad de ser sorteados al menos una vez y que el sorteo se reinicie después de sortear todos los libros.

1 respuesta

Hola Fabio, espero que estés bien

Gracias por compartir tu actividad con nosotros. Recuerda que estamos aquí para ayudarte. Si necesitas ayuda, no dudes en buscarnos en el foro.

¡Gracias nuevamente!

Saludos,

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!