using System.Collections.Generic;
public static void Main()
var weights = new List<double>()
var sumOfAllWeights = weights.Aggregate(0d, (sum, value) => sum + value);
var howManyTimesPicked = Enumerable.Repeat(0, weights.Count).ToArray();
for (var i = 0; i < 100; i++)
var randomNumber = rng.NextDouble() * sumOfAllWeights;
for (var currentIndex = 0; currentIndex < weights.Count; currentIndex++)
var currentWeight = weights[currentIndex];
if (randomNumber > previousValue && randomNumber < previousValue + currentWeight)
pickedIndex = currentIndex;
previousValue += currentWeight;
howManyTimesPicked[pickedIndex]++;
Console.WriteLine("index : weight : picks");
for (var i = 0; i < howManyTimesPicked.Length; i++)
Console.WriteLine(i + " : " + weights[i] + " : " + howManyTimesPicked[i]);