我试图让变量的新值接近变量的旧值。
bool FirstPos = true;
float LastPos = 0;
float LeftPos = -2.6f;
if(FirstPos)
{
LeftPos = Random.Range(-2.6f, 1f);
LastPos = LeftPos;
FirstPos = false;
} else
{
AddValue = Random.Range(0, 1.25f);
NewValue = LastPos + AddValue;
if((NewValue >= -2.6f) && (NewValue <= 1f)){
LastPos = NewValue;
} else {
AddValue = Random.Range(0, 1.25f);
}
}
但我真的不知道如何让它工作并尽可能简单。
情景:
CurrentValue = Random.Range(-2.6f, 1f);
//CurrentValue returns -2.4 as value
NewValue
返回(-2.4 + 2)
或(-2.4 - 2)
之间的数字
但它不能低于-2.6
或高于1
,因为新值必须介于这两个数字之间,但也接近旧数字。
2是添加到新值的最高数字。
答案 0 :(得分:1)
您可以执行以下操作:
private static float GetNextRandomValue(Random random,
float current,
float absoluteOffset,
float floor = float.MinValue,
float ceiling = float.MaxValue)
{
var next = (float)(current + absoluteOffset * (2 * random.NextDouble() - 1));
return next > ceiling ? ceiling : (next < floor ? floor : next);
}
}
并且,根据您在评论中的示例,您可以将其称为:
var rnd = new Random();
GetNextRandomValue(rnd, -2.2f, 1.2f, -2.6f);