Add multiplication practice

This commit is contained in:
2024-08-19 20:51:15 -04:00
parent 40c3c29019
commit 609fc12418
5 changed files with 178 additions and 3 deletions

16
src/prob.ts Normal file
View File

@@ -0,0 +1,16 @@
namespace Prob {
export type Probability<T> = [ number, T ]
type NonEmptyArray<T> = [ T, ...T[] ]
export type ProbabilitySet<T> = NonEmptyArray<Probability<T>>
export const chooseRandom = <T>(probabilities : ProbabilitySet<T>) : T => {
let r = Math.random(), accum = 0
for (let i = 0; i < probabilities.length; i++) {
if ((r >= accum) && (r < accum + probabilities[i][0]))
return probabilities[i][1]
accum += probabilities[i][0]
}
return probabilities[probabilities.length - 1][1]
}
}
export default Prob