public WeightedRandom(AbstractRandomProvider provider) : this(WeightAlgorithm.FairBiased)
 {
     randomProvider = provider ?? throw new Exception("Random provider is not instantiated.");
 }
 public WeightedRandom(AbstractRandomProvider provider, WeightAlgorithm algorithm)
 {
     randomProvider = provider ?? throw new Exception("Random provider is not instantiated.");
     this.algorithm = algorithm;
 }
 public WeightedRandom(WeightAlgorithm algorithm)
 {
     randomProvider = new SystemRandomProvider();
     this.algorithm = algorithm;
 }