/WeightedRandom

Unity library for evaluating generic biased randomized results.

Primary LanguageC#

Weighted Randomizer for Unity

Allows you to get generic biased random selections depending on provided weight.

Best part of this randomizer is, it doesn't require to provide 100% total. It auto-calculates weights regarding to your weights.

So you can pass _Add->80%-Tremors Add->70%-Zombies in the same total.

Usage

Simple example:

WeightedRandom<Monsters> rnd = new WeightedRandom<Monsters>();
rnd.Add(new Ghost(),0.5f);
rnd.Add(new Zombie(),0.3f);

rnd.Next(); //This will return a biased random result.

Alternative parameters

WeightedRandom uses System.Random and FairBiased algorithm by default.

You can choose custom options on the constructor.

WeightAlgorithm

There are two algorithms right now.

  • UnfairBiased: Provides a larger probability scale but results can be less predictable.
  • FairBiased: Provides a steady bias and therefor more predictable results.

Weight Providers

Weight providers are basically random api's which have provided by Unity and C#(System) libraries.

  • SystemRandomProvider: Uses System.Random implementation
  • UnityEngineRandomProvider: Uses UnityEngine.Random.Range implementation
  • UnityMathematicsRandomProvider: Uses Unity's new SIMD math library with Unity.Random implementation

TO-DO

  • AddRange for multiple queries at once.
  • GetInstance() implementation on other providers with T where:class