¿Hay alguna forma mejor de codificar esto, ya que se siente muy poco práctico y ocupa mucho espacio? Básicamente es una posibilidad aleatoria de obtener una rareza, por ejemplo, obtener una espada poco común .
if (Math.random() * 100 < 100 / (19.37 / NewData.PriceDivider)) { Rarity = Rarities.uncommon; Embed.addField("Rarity", Rarity, true); Embed.setColor("GREEN"); } else if (Math.random() * 100 < 100 / (5.18 / NewData.PriceDivider)) { Rarity = Rarities.common; Embed.addField("Rarity", Rarity, true); Embed.setColor("GREY"); } else if (Math.random() * 100 < 100) { Rarity = Rarities.basic; Embed.addField("Rarity", Rarity, true); Embed.setColor("GREY"); }Tal vez podría evitar reescribir las declaraciones de asignación utilizando el operador ternario:
let rdm = Math.random() * 100 const firstCase = 19.37 / NewData.PriceDivider const secondCase = 19.37 / 100 / (5.18 / NewData.PriceDivider) // Handle rdm === 100 here if (rdm === 100) // do something Rarity = rdm < firstCase ? Rarities.uncommon : rdm < secondCase ? Rarities.common : Rarities.basic Embed.addField("Rarity", Rarity, true); Embed.setColor(rdm < firstCase ? "GREEN" : "GREY");Si desea manejar el caso donde Math.random() === 1, creo que debería manejarlo antes de este bloque de código.