Los de nivel 1 deben tener X probabilidad.
Los de nivel 2, X/2.
Los de nivel 3, X/3.
y así hasta nivel 99: X/99
No sé bien qué es X, pero si ponía porcentajes quedaba mal:
100% (100/1)
50% (100/2)
etc, si suman los porcentajes supera 100 y no se entiende.
La cuestión es que entre más nivel, menos probable. El siguiente código no hace exacto lo que quiero creo, pero como base parece bien:
Código
LVElegido = 0; PesoDelElegido = -999; LVCandidato = 0; do { LVCandidato++; Peso = Math.random() * 100) - LVCandidato; if (Peso > PesoDelElegido) { PesoDelElegido = Peso; LVElegido = LVCandidato; } } while (LVCandidato < 99);
Quiero que además una variable Dificultad haga más probable que los LV elegidos sean altos.
No sé exactamente cómo ¿así?
Peso = Math.random() * 100) - LVCandidato/Dificultad;
Quisiera que algo que aumenta el resultado no divida, claridad.
Lo he hablado con una IA pero no entiendo sus respuestas.
Esto parece tener demasiados pasos y ser excesivamente complicado (algunas variables tienen nombres que ya no uso pero no es mucha diferencia, básicamente LVChequeandose es LVCandidato y TuNivel es Dificultad:
Código
LVElegido = 0; PesoDelElegido = -1; LVChequeandose = 0; do { LVChequeandose++; // 1. Calculamos cuánto se aleja este enemigo del nivel 1 Distancia = LVChequeandose - 1; // 2. Dividimos esa distancia entre TuNivel. // Al subir de nivel, la distancia "duele menos" y los niveles altos ganan peso. Penalizacion = Distancia / TuNivel; // 3. El peso base arranca en 100 y le restamos la penalización suavizada PesoBase = 100 - Penalizacion; if (PesoBase < 0) PesoBase = 0; // Evitamos pesos negativos // 4. Aplicamos el Math.random() multiplicando al PesoBase PesoCandidato = PesoBase * Math.random(); if (PesoCandidato > PesoDelElegido) { PesoDelElegido = PesoCandidato; LVElegido = LVChequeandose; } } while (LVChequeandose < 99);
Y esto es cuando se lo pedí en 1 línea:
Código
PesoCandidato = Math.max(0, 100 - ((LVChequeandose - 1) / TuNivel)) * Math.random();
En fin, quisiera que me digan un método simple o me expliquen por qué es necesario tanto lío.
Por qué hace
Distancia = LVChequeandose - 1;
Penalizacion = Distancia / TuNivel;
en vez de
Penalizacion = LVChequeandose / TuNivel;
¿por qué es tan importante el -1?





Autor



En línea
