diff --git a/src/getNewPrompt.mjs b/src/getNewPrompt.mjs index 32f308d..72466a1 100644 --- a/src/getNewPrompt.mjs +++ b/src/getNewPrompt.mjs @@ -1,10 +1,6 @@ import { db } from "./db.mjs" -import { randomSkewNormal, randomSkewNormalTrimmed } from "./skewNormal.mjs" -const maxCount = 30000000 -const minCount = 200000 - -export default async function getNewPrompt() { +export default async function getNewPrompt({minCount = 200000, maxCount = 30000000, rarity}) { const badWords = await db('bad_words') .select('word') @@ -18,24 +14,32 @@ export default async function getNewPrompt() { .andWhere('count', '>', minCount) .andWhere('word', 'not in', badWords) .whereNotNull('pronunciation') - .orderBy('count') - + .orderByRaw('count desc') + + const getBiasedRng = (min,max,bias,influence) => { + const random = Math.random() * (max - min) + min + const mix = Math.random() * influence + return random * (1-mix) + bias * mix + } const randomEntry = (array) => { - //const random = (randomSkewNormal(Math.random,0,2,0)/6) - const random = Math.random() + const random = getBiasedRng(0,1,rarity,1) + const mix = Math.random() + console.log("RANDOM: "+random) return array[ parseInt( array.length * random ) ] } + db.destroy() - return randomEntry(prompts) + return randomEntry(prompts).count } -console.log(await getNewPrompt()) +console.log(await getNewPrompt({rarity:1})) + diff --git a/src/skewNormal.mjs b/src/skewNormal.mjs deleted file mode 100644 index 6b23acb..0000000 --- a/src/skewNormal.mjs +++ /dev/null @@ -1,29 +0,0 @@ -const randomNormals = (rng) => { - let u1 = 0, u2 = 0; - //Convert [0,1) to (0,1) - while (u1 === 0) u1 = rng(); - while (u2 === 0) u2 = rng(); - const R = Math.sqrt(-2.0 * Math.log(u1)); - const Θ = 2.0 * Math.PI * u2; - return [R * Math.cos(Θ), R * Math.sin(Θ)]; -} - -export const randomSkewNormal = (rng, ξ, ω, α = 0) => { - const [u0, v] = randomNormals(rng); - if (α === 0) { - return ξ + ω * u0; - } - const 𝛿 = α / Math.sqrt(1 + α * α); - const u1 = 𝛿 * u0 + Math.sqrt(1 - 𝛿 * 𝛿) * v; - const z = u0 >= 0 ? u1 : -u1; - return ξ + ω * z; -} - -export const randomSkewNormalTrimmed = ()=>{ - let random = 1 - do { - random = randomSkewNormal(Math.random,0,2,0) - } while (random<0 || random>0.999999) - return random -} -