Add multiplication practice
This commit is contained in:
16
src/prob.ts
Normal file
16
src/prob.ts
Normal 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
|
||||
Reference in New Issue
Block a user