getNewPrompt function
This commit is contained in:
parent
77ec06b59e
commit
3d434a570c
Binary file not shown.
|
@ -0,0 +1,41 @@
|
|||
import { db } from "./db.mjs"
|
||||
import { randomSkewNormal, randomSkewNormalTrimmed } from "./skewNormal.mjs"
|
||||
|
||||
const maxCount = 30000000
|
||||
const minCount = 200000
|
||||
|
||||
export default async function getNewPrompt() {
|
||||
const badWords = await db('bad_words')
|
||||
.select('word')
|
||||
|
||||
const prompts = await db('dictionary')
|
||||
.select('*')
|
||||
.where({
|
||||
derivative: 0,
|
||||
scientific: 0,
|
||||
})
|
||||
.andWhere('count', '<', maxCount)
|
||||
.andWhere('count', '>', minCount)
|
||||
.andWhere('word', 'not in', badWords)
|
||||
.whereNotNull('pronunciation')
|
||||
.orderBy('count')
|
||||
|
||||
|
||||
const randomEntry = (array) => {
|
||||
//const random = (randomSkewNormal(Math.random,0,2,0)/6)
|
||||
const random = Math.random()
|
||||
return array[
|
||||
parseInt(
|
||||
array.length * random
|
||||
)
|
||||
]
|
||||
}
|
||||
db.destroy()
|
||||
return randomEntry(prompts)
|
||||
}
|
||||
|
||||
|
||||
|
||||
console.log(await getNewPrompt())
|
||||
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
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
|
||||
}
|
||||
|
Loading…
Reference in New Issue