import type { DiceExpression } from './dice-expression'; /** * A discrete probability distribution over values of type `T`. * * The `values` map sends each possible outcome to its probability mass; the * probabilities sum to 1 (modulo small floating-point error). * * Note on map keys: JavaScript `Map` uses SameValueZero / reference equality * for keys. `T` should be a primitive (number, string, boolean) or an * intentionally stable reference; otherwise distinct objects with the same * shape will be treated as different outcomes. */ export interface Distribution { values: Map; } declare function singleton(value: T): Distribution; declare function uniform(values: T[]): Distribution; declare function fromMap(map: Map): Distribution; declare function fromWeights(entries: Array<[T, number]>): Distribution; declare function mapDist(d: Distribution, fn: (v: T) => U): Distribution; declare function combine(a: Distribution, b: Distribution, fn: (av: A, bv: B) => C): Distribution; declare function conditional(cond: Distribution, thenD: Distribution, elseD: Distribution): Distribution; declare function add(a: Distribution, b: Distribution): Distribution; declare function subtract(a: Distribution, b: Distribution): Distribution; declare function multiply(a: Distribution, b: Distribution): Distribution; declare function negate(d: Distribution): Distribution; declare function and(a: Distribution, b: Distribution): Distribution; declare function or(a: Distribution, b: Distribution): Distribution; declare function not(d: Distribution): Distribution; declare function greaterThan(a: Distribution, b: Distribution): Distribution; declare function lessThan(a: Distribution, b: Distribution): Distribution; declare function greaterOrEqual(a: Distribution, b: Distribution): Distribution; declare function lessOrEqual(a: Distribution, b: Distribution): Distribution; declare function equal(a: Distribution, b: Distribution): Distribution; declare function greaterThanConst(d: Distribution, k: number): Distribution; declare function lessThanConst(d: Distribution, k: number): Distribution; declare function greaterOrEqualConst(d: Distribution, k: number): Distribution; declare function lessOrEqualConst(d: Distribution, k: number): Distribution; declare function equalConst(d: Distribution, k: T): Distribution; declare function repeat(d: Distribution, n: number): Distribution; declare function probabilityOf(d: Distribution, predicate: (v: T) => boolean): number; declare function mean(d: Distribution): number; declare function variance(d: Distribution): number; declare function minOf(d: Distribution): number; declare function maxOf(d: Distribution): number; declare function fromDiceExpression(expr: DiceExpression): Distribution; /** * Public namespace for composing discrete probability distributions. * * All combinators assume that the input distributions are independent. If you * need correlations between random sources, use the program language and * `ProgramStats.analyze`, which tracks shared sources internally. */ export declare const Distribution: { singleton: typeof singleton; uniform: typeof uniform; from: typeof fromMap; fromWeights: typeof fromWeights; map: typeof mapDist; combine: typeof combine; conditional: typeof conditional; add: typeof add; subtract: typeof subtract; multiply: typeof multiply; negate: typeof negate; and: typeof and; or: typeof or; not: typeof not; greaterThan: typeof greaterThan; lessThan: typeof lessThan; greaterOrEqual: typeof greaterOrEqual; lessOrEqual: typeof lessOrEqual; equal: typeof equal; greaterThanConst: typeof greaterThanConst; lessThanConst: typeof lessThanConst; greaterOrEqualConst: typeof greaterOrEqualConst; lessOrEqualConst: typeof lessOrEqualConst; equalConst: typeof equalConst; repeat: typeof repeat; probabilityOf: typeof probabilityOf; mean: typeof mean; variance: typeof variance; min: typeof minOf; max: typeof maxOf; fromDiceExpression: typeof fromDiceExpression; }; export {};