53 lines
1.6 KiB
TypeScript
53 lines
1.6 KiB
TypeScript
// Probability.ts
|
|
|
|
export const prob = (app: any) => (p: number): boolean => {
|
|
return app.randomGen() * 100 < p;
|
|
};
|
|
|
|
export const toss = (app: any) => (): boolean => {
|
|
return app.randomGen() > 0.5;
|
|
};
|
|
|
|
export const odds = (app: any) => (n: number, beats: number = 1): boolean => {
|
|
return app.randomGen() < (n * app.ppqn()) / (app.ppqn() * beats);
|
|
};
|
|
|
|
export const never = () => (): boolean => {
|
|
return false;
|
|
};
|
|
|
|
export const almostNever = (app: any) => (beats: number = 1): boolean => {
|
|
return app.randomGen() < (0.025 * app.ppqn()) / (app.ppqn() * beats);
|
|
};
|
|
|
|
export const rarely = (app: any) => (beats: number = 1): boolean => {
|
|
return app.randomGen() < (0.1 * app.ppqn()) / (app.ppqn() * beats);
|
|
};
|
|
|
|
export const scarcely = (app: any) => (beats: number = 1): boolean => {
|
|
return app.randomGen() < (0.25 * app.ppqn()) / (app.ppqn() * beats);
|
|
};
|
|
|
|
export const sometimes = (app: any) => (beats: number = 1): boolean => {
|
|
return app.randomGen() < (0.5 * app.ppqn()) / (app.ppqn() * beats);
|
|
};
|
|
|
|
export const often = (app: any) => (beats: number = 1): boolean => {
|
|
return app.randomGen() < (0.75 * app.ppqn()) / (app.ppqn() * beats);
|
|
};
|
|
|
|
export const frequently = (app: any) => (beats: number = 1): boolean => {
|
|
return app.randomGen() < (0.9 * app.ppqn()) / (app.ppqn() * beats);
|
|
};
|
|
|
|
export const almostAlways = (app: any) => (beats: number = 1): boolean => {
|
|
return app.randomGen() < (0.985 * app.ppqn()) / (app.ppqn() * beats);
|
|
};
|
|
|
|
export const always = () => (): boolean => {
|
|
return true;
|
|
};
|
|
|
|
export const dice = (app: any) => (sides: number): number => {
|
|
return Math.floor(app.randomGen() * sides) + 1;
|
|
}; |