我希望创建一个基本上执行以下操作的脚本:-
IE 应该是这样的:
Total float = 2.50
Amount of splits = 2
New float array = [2, 0.50]
or
Total float = 4.00
Amount of splits = 4
New float array = [1, 2, 0.25, 0.75]
我目前没能尝试太多。我一直在想办法让它发挥作用,但我不确定最好的方法。
编辑:我能够取得一些进展,但我有一个小问题,有时如果我使用的数字太小,它会在我不想要的列表中添加一个 0 或两个。
public void SplitWinnings()
{
splitAmounts = new float[loseThreshold - 1];
while(splitAmounts.Sum() < totalWinAmount)
{
int rng = Random.Range(0, splitAmounts.Length);
splitAmounts[rng] += 0.05f;
splitAmounts[rng] = Mathf.Round(splitAmounts[rng] * 100f) / 100f;
}
}
正如@Jeroen Mostert 所提到的,这适用于较低数量的拆分值。但实际上我正在寻找什么。 :)
public void SplitWinnings()
{
splitAmounts = new float[loseThreshold - 1];
while(splitAmounts.Sum() < totalWinAmount)
{
int rng = Random.Range(0, splitAmounts.Length);
splitAmounts[rng] += minIncrement;
float splitFloat = (Mathf.Round(splitAmounts[rng] * 100f) / 100f);
if (splitFloat > 0)
{
splitAmounts[rng] = splitFloat;
}
}
}