Skip to main content

Discrete Distributions

Overview​

Discrete distributions define a collection of items which each have a probability of being selected. You can sample from the distribution to select a random item from the collection based on each item's probability.

Discrete distributions are used internally by loot tables for random selection. Each distribution has a different method for randomly selecting items:

  • Unlimited: Each item has a probability, and can be sampled an unlimited number of times.
  • Grab Bag: This is like putting a bunch of items into a bag and grabbing one at random. Also similar to a deck of cards.
  • Weighted Bag: This is like putting a bunch of items into a bag, but each item has a different size. As such, the bigger items are more likely to be sampled.
  • Nested Bag: Like a weighted bag, but some items can limit the selections of others.

Usage​

Construction​

  1. Spawn a object with the distribution class of your choice using the SpawnObject blueprint node.
  2. Invoke Initialize on the object.

Sampling​

All distributions implement the functions listed in sampling.

Interface​

All discrete distributions implement the interface ISTDiscreteDistribution. Some distributions implement ISTLimitedDiscreteDistribution, which implies their items have a limited count.

After construction, all distributions can have item values modified (e.g., weight), but cannot have additional items added/removed. Create a new distribution if you must add or remove items.