Estoy creando una página en Wix donde tengo un repetidor que solo trae 3 elementos de mi conjunto de datos a la vez al hacer clic en el botón de barajar (hay 22 cartas en el conjunto de datos) que se supone que debe barajar y traer diferentes combinaciones.
Lo que espero: haga clic en el botón, luego trae 3 cartas aleatorias (que son imágenes de cartas en mi conjunto de datos) de una baraja de 22 cartas.
Qué está pasando: está trayendo las mismas pocas combinaciones de cartas y en realidad no es aleatorio y algunas cartas nunca aparecen.
Aquí está mi código:
export function button7_click(event) { // clear any filters in the dataset $w("#dynamicDataset").setFilter( wixData.filter() ); // get size of collection that is connected to the dataset let count = $w("#dynamicDataset").getTotalCount(); // get random number using the size as the maximum let idx = Math.floor(Math.random() * count-1); // set the current item index of the dataset $w("#dynamicDataset").setCurrentItemIndex(idx); }¿Qué puedo hacer para traer una distribución realmente aleatoria de 3 cartas?
La función Math.random() de JavaScript es rápida, pero tiene problemas. Primero, no se puede sembrar, segundo, su aleatoriedad deja poco que desear. Según Birthday Paradox , la existencia de valores duplicados no significa que sean aleatorios. Aunque hay muchas formas de cambiar el patrón de números aleatorios en JavaScript, aquí hay tres métodos diferentes adoptados por la comunidad:
Math.random() , por lo que esta solución es útil tanto cuando necesita una secuencia pseudoaleatoria repetible completamente predecible como cuando necesita una semilla robusta que es mucho más impredecible que la de su navegador.Math.random() .