gpt4 book ai didi

c# - 获取范围内不包括子范围的随机 float

转载 作者:行者123 更新时间:2023-11-30 20:47:18 24 4
gpt4 key购买 nike

如何获得一个范围内的随机 float ,不包括子范围?到目前为止我唯一的想法是创建两个范围并从这两个范围中随机选择。我必须使用 float Random.Range(float min, float max)在 unity3d 引擎中找到的方法,因此代码为:

float GetRandomNumber(float min, float max, float minExclusive, float maxExclusive)
{
float outcome;
if (Random.Range(0, 1) < 0.5f)
outcome = Random.Range(min, minExclusive);
else
outcome = Random.Range(maxExclusive, max);
return outcome;
}

我可以放心地假设 min < minExclusive < maxExclusive < max .

我尝试用谷歌搜索,但我发现的唯一类似问题涉及整数,它们的行为有点不同(例如,您可以轻松地迭代它们):

有没有人有更好的主意?

最佳答案

实现此目的的一种方法是生成忽略范围的随机数,然后适本地移动值。这应该确保在一组可接受的值上均匀分布(假设这是您想要的):

var excluded = maxExclusive - minExclusive;
var newMax = max - excluded;
var outcome = Random.Range(min, newMax);

return outcome > minExclusive ? outcome + excluded : outcome;

关于c# - 获取范围内不包括子范围的随机 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25891033/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com