private void Test() { _output.text = string.Empty; // Fill weighted list with items and weights: _items.Add(ItemsWithWeights.Item1, (float)ItemsWithWeights.Item1); _items.Add(ItemsWithWeights.Item2, (float)ItemsWithWeights.Item2); _items.Add(ItemsWithWeights.Item3, (float)ItemsWithWeights.Item3); _items.Add(ItemsWithWeights.Item4, (float)ItemsWithWeights.Item4); //Prepare container for results: Dictionary <ItemsWithWeights, int> results = new Dictionary <ItemsWithWeights, int>(); results.Add(ItemsWithWeights.Item1, 0); results.Add(ItemsWithWeights.Item2, 0); results.Add(ItemsWithWeights.Item3, 0); results.Add(ItemsWithWeights.Item4, 0); // Begin test: ItemsWithWeights currentResult; for (int i = 0; i < _attempts; i++) { // Get item currentResult = _items.GetRandomByWeight(); // Save result results[currentResult]++; } // Log results: string message = "Weighted list test. " + _attempts + " attempts: "; Debug.Log(message); _output.text += message + System.Environment.NewLine; foreach (var key in results.Keys) { message = "Item " + key.ToString() + " with weight " + ((float)key) + " occurs " + results[key] + " times"; _output.text += message + System.Environment.NewLine; Debug.Log(message); } }