"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo seleccionar de manera eficiente elementos de una matriz aleatoria sin repeticiones?

¿Cómo puedo seleccionar de manera eficiente elementos de una matriz aleatoria sin repeticiones?

Publicado el 2024-11-20
Navegar:696

How Can I Efficiently Select Random Array Items Without Repeats?

Cómo seleccionar de forma eficiente y aleatoria un elemento de matriz sin repeticiones

Su código crea una serie de opciones recientes para evitar repeticiones y llama a una función recursiva llamado ChooseName() cuando un elemento seleccionado está en las opciones recientes. Este enfoque garantiza la unicidad, pero puede generar un bucle infinito si el tamaño de la matriz es limitado.

¿Es una función recursiva?

Sí, elijaNombre() se llama a sí mismo encuentre una selección única. La recursividad permite que la función itere a través de los elementos de la matriz hasta que encuentre uno que no esté en las opciones recientes.

Mejora de la eficiencia

Para evitar bucles infinitos, considere un enfoque alternativo sugerido en la respuesta:

function randomNoRepeats(array) {
  var copy = array.slice(0);
  return function() {
    if (copy.length 

Esta función genera una copia de la matriz original y elige aleatoriamente un elemento de ella. Una vez que se utilizan todos los elementos, crea una nueva copia de la matriz original, lo que garantiza selecciones únicas incluso cuando la matriz está agotada.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3