WeightedValue.cs
using System;
[Serializable]
public class WeightedValue
{
public string value;
public int weight;
}
PrintRandomValue.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PrintRandomValue : MonoBehaviour
{
public List<WeightedValue> weightedValues;
void Update()
{
if(Input.GetMouseButtonDown(0))
{
string randomValue = GetRandomValue(weightedValues);
Debug.Log(randomValue ?? "No entries found");
}
}
string GetRandomValue(List<WeightedValue> weightedValueList)
{
string output = null;
//Getting a random weight value
var totalWeight = 0;
foreach (var entry in weightedValueList)
{
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;
break;
}
}
return output;
}
}