public void WriteSelected()
        {
            WeightedItem selectedItem = GetItem();

            if (selectedItem != null)
            {
                Console.WriteLine(selectedItem.Text + ": " + selectedItem.Weight);
            }
            else
            {
                Console.WriteLine("All items have 0 probability of getting selected");
            }
        }
        public WeightedItem GetItem()
        {
            int    totalWeight = items.Sum(x => x.Weight);
            Random rnd         = new Random((int)DateTime.Now.Ticks);
            int    random      = rnd.Next(0, totalWeight);

            WeightedItem selected = null;

            foreach (var item in items)
            {
                if (random < item.Weight && item.Weight > 0)
                {
                    //need a new item and not a reference to get the right weights
                    selected = new WeightedItem(item.Text, item.Weight);
                    //decrease item's weight
                    item.Weight -= _decreaseIncrement;
                    break;
                }

                random -= item.Weight;
            }
            return(selected);
        }