string GetRandomValue(List<WeightedValue> weightedValueList, float zeroChance)
{
string output = null;
//Getting a random weight value
var totalWeight = 0;
foreach (var entry in weightedValueList)
{
// Check if the entry should have a weight of zero
if (Random.Range(0, 100) < zeroChance)
{
entry.weight = 0;
}
totalWeight += entry.weight;
}
var rndWeightValue = Random.Range(1, totalWeight + 1);
//Checking where random weight value falls
var processedWeight = 0;
foreach (var entry in weightedValueList)
{
processedWeight += entry.weight;
if(rndWeightValue <= processedWeight)
{
output = entry.value;
currentEntryValue = entry.value;
break;
}
}
return output;
}