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.
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