У меня есть требование в моем проекте .NET, где мне нужно выбрать элемент из коллекции, каждому элементу назначен вес (целое число от 1 до 10).
Мне нужен генератор случайных чисел, который бы учитывал этот вес, т.е. чем больше вес, тем больше шансов, что объект будет выбран.
Быстрое копирование / вставка кода C # на случай, если кто-то наткнется на это.
class RandomWeightedSelector<T>
{
private List<T> items = new List<T>();
public void Add(T item, uint weight = 1)
{
for (int i = 0; i < weight; i++)
items.Add(item);
}
public T GetRandom()
{
return items[new Random().Next(0, items.Count)];
}
}