@acausal/distributions
v3.0.0-alpha.3
Published
Weighted random selection from discrete distributions — type-safe, serializable, with immutable and mutable APIs
Maintainers
Readme
@acausal/distributions
Weighted random selection from discrete distributions — type-safe, serializable, with immutable and mutable APIs.
Install
npm install @acausal/distributionsUsage
import { Distribution } from '@acausal/distributions';
// Create from source weights
const loot = Distribution.new({ gold: 60, silver: 30, diamond: 10 });
// Pick one
Distribution.pickOne(loot); // 'gold' (60% chance)
// Pick with mask (exclude items)
Distribution.pickOne(loot, ['gold']); // 'silver' or 'diamond'
// Modify immutably
const boosted = Distribution.addNormalValues(loot, { diamond: 0.1 });
// Immutable class variant
const dist = new Distribution({ source: { a: 3, b: 1 }, seed: 42 });
const frozen = dist.clone(true); // strip source, keep normalizedSupports blending, masking, source/normal weight separation, and full serialization. Built on @acausal/random.
Part of the acausal procedural generation toolkit.
