Así que quiero que un número aleatorio (imagen) de un código a continuación aparezca todo el tiempo que quiera. En este caso estoy tratando con imágenes. Digamos que quiero hacer una imagen llamada 1.png solo para que se imprima en la pantalla 4 veces exactamente y luego digamos que las imágenes 5.png y 6.png juntas se devolverán 10 veces (puede ser 3 veces 5.png , 7 por 6.png y otras formas en que podemos llegar a 10) y así sucesivamente para otros ejemplos. ¿Cómo puedo hacerlo, ya que no tengo ni idea?
Espero haber explicado de la manera correcta lo que quiero, y espero que alguien pueda ayudar, gracias por su ayuda.
function RandomImage() { return (Math.ceil(Math.random() * 10)).toString() + ".png"; }Si desea duplicar una cadena, puede usar una función como esta
function repeat(item, number=1) { return Array.from({length: number}).fill(item) }A continuación, puede llamarlo como:
repeat(RandomImage(), 3) // -> ["1.jpeg", "1.jpeg", "1.jpeg"]Puede hacer esto configurando una estructura de datos que realiza un seguimiento de cuántas veces ya se ha devuelto un número específico. Para este propósito podemos utilizar el objeto Map de JavaScript.
Así que la idea básica es esta:
Aquí hay un ejemplo:
let randomNumbers = new Map(); let maxNumbers = 10; for (let a = 0; a <= maxNumbers; a++) { randomNumbers.set(a, 0); } function RandomImage() { let failed = false; let random; do { failed = false; random = Math.ceil(Math.random() * maxNumbers); switch (random) { case 1: if (randomNumbers.get(1) == 4) { failed = true; } break; case 5: if (randomNumbers.get(5) + randomNumbers.get(6) == 10) { failed = true; } break; case 6: if (randomNumbers.get(5) + randomNumbers.get(6) == 10) { failed = true; } break; } } while (failed); randomNumbers.set(random, randomNumbers.get(random) + 1); return random.toString() + ".png"; } for (let a = 0; a < 50; a++) { console.log(RandomImage()); }