gpt4 book ai didi

algorithm - 如何找到环绕的两个数字的平均值?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:31:06 24 4
gpt4 key购买 nike

我有一个 int表示范围 [0, 8[ 环绕的数字:

       2      
1 3


0 4


7 5
6

现在我需要像这样找到两个数字的平均值,例如 7 和 0 的平均值为 7.5,7 和 2 的平均值为 0.5,0 和 4 的平均值为 2 或6等

我找到了 this ("How do you calculate the average of a set of angles?")相关问题,但它是关于角度的,我看不出它在这里有什么帮助。还有 "How to subtract two unsigned ints with wrap around or overflow"但这是关于减法,而不是求平均值。有什么指点吗?

我还有一个包装功能,如果可以在这里以某种方式使用的话:

template <class type>
inline type Wrap(type Value, type Minimum, type Maximum)
{
Value = ((Value - Minimum) % (Maximum + 1 - Minimum));
return (Value >= 0 ? Minimum : Maximum + 1) + Value;
}

编辑:尝试更正式地定义规则:

如果abs(a - b) <= 4然后avg = (a + b) / 2. .
否则,avg = (a + b) / 2. + 4; if (avg >= 8) avg -= 8; .

最佳答案

另一个解决方案是使用你的答案cited首先将数字转换为角度:

  1. 将您的数字转换为角度。

    angle_a = a * pi / 4
    angle_b = b * pi / 4
  2. 计算每个角度的单位向量

    unit_a
    unit_b
  3. 计算单位向量平均值

    unit_average = (unit_a + unit_b) / 2
  4. 计算unit_average的角度

    angle_average
  5. 将angle_average 转换为数字

    number_average = angle_average * 4 / pi

那么 number_average 就是我们的答案

关于algorithm - 如何找到环绕的两个数字的平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31083677/

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