WeightedSelector.NET lets you assign weights to a set of choices, then make intelligent decisions based on each choice's proportion of the total weight.
This simple concept is useful for machine learning scenarios where choices need to be made based on dynamic factors. Great examples include...
RandomSelection is designed to take in entries, with the option to give some entries a higher chance at being selected, and then return one or more selectees. It utilizes System.Security.Cryptography to ensure a higher quality random number is used for shuffling the data and selecting winners.
Creates a weighted random distribution. Can be used when certain values should occure more or less than when using Random. Values and distribution weight is supplied into the constructor. WeightedRandom.Next() can then be called to get the next value.
KombiN is an algorithm to get index for combination pair and to get combination pair from index, where all possible combination pairs from two finite sets are sorted by their weight in ascending order.
MoreComplexDataStructures is a class library containing a collection of data structures (plus related utility classes) more complex than those found in the standard .NET framework.
The project currently contains the following data structures and utility classes...
WeightBalancedTree<T> - A...