gpt4 book ai didi

php - 区间内数字之间的接近度

转载 作者:行者123 更新时间:2023-12-04 05:42:58 24 4
gpt4 key购买 nike

我在 x = 1 和 y = 9 之间有一组(浮点)数:

$numbers = array(1, 2, 3, 4, 5, 6, 7, 8, 9);

如何在给定的间隔内计算数字 A 和数字 B 之间的接近度度量?

我试过的

如果上述集合的振幅 ( max - min ) 是 9 - 1 = 8我可以使用公式 (n - min) / (max - min) 计算任何数字的相对值,计算所有值的结果:
  • (1 - 1) / (9 - 1) = 0
  • (2 - 1) / (9 - 1) = 0.125
  • (3 - 1) / (9 - 1) = 0.25
  • (4 - 1) / (9 - 1) = 0.375
  • (5 - 1) / (9 - 1) = 0.5
  • (6 - 1) / (9 - 1) = 0.625
  • (7 - 1) / (9 - 1) = 0.75
  • (8 - 1) / (9 - 1) = 0.875
  • (9 - 1) / (9 - 1) = 1

  • 将最小相对值(在 A 和 B 之间)除以最大相对值(也在 A 和 B 之间),似乎产生了我正在寻找的那种度量。这里有一些例子:
    var_dump(min(0.875, 0.25) / max(0.875, 0.25));   // 0.286 between 8 and 3
    var_dump(min(0.875, 0.375) / max(0.875, 0.375)); // 0.429 between 8 and 4
    var_dump(min(0.875, 0.75) / max(0.875, 0.75)); // 0.857 between 8 and 7
    var_dump(min(0.875, 0.875) / max(0.875, 0.875)); // 1 between 8 and 8
    var_dump(min(0.25, 0.25) / max(0.25, 0.25)); // 1 between 3 and 3

    问题

    每当集合的最小值起作用时,结果总是 0 :
    var_dump(min(0.875, 0) / max(0.875, 0));         // 0 between 8 and 1
    var_dump(min(0.125, 0) / max(0.125, 0)); // 0 between 2 and 1
    var_dump(min(0, 0) / max(0, 0)); // 0 between 1 and 1 (ERR!)

    关于如何解决这个问题的任何想法?

    最佳答案

    我提出了这样的建议:

    <?php

    function prox($a,$b)
    {
    return(abs($a-$b) / abs(1-9));
    }

    printf("%f\n", prox(1,2)); // 0.125000
    printf("%f\n", prox(2,3)); // 0.125000
    printf("%f\n", prox(1,1)); // 0.000000
    printf("%f\n", prox(1,9)); // 1.000000

    1 和 2 之间的接近度与 2 和 3 相同。这似乎是有道理的。

    您将获得的最大接近度是您指定的数字是您预定义范围的界限。

    当您指定的数字相等时,您将获得的最小接近度。

    如果您希望相反的情况成立(我认为这更好地反射(reflect)了 接近度 ,您可以这样做:
    <?php

    function prox($a,$b)
    {
    return(1 - (abs($a-$b) / abs(1-9)));
    }

    printf("%f\n", prox(1,2));
    printf("%f\n", prox(2,3));
    printf("%f\n", prox(1,1));
    printf("%f\n", prox(1,9));

    这将输出:
    0.875000
    0.875000
    1.000000
    0.000000

    现在,与您指定的相同的数字产生 1,边界产生 0,因为它们是最不接近的值对。像 (1,2)、(2,3)、(3,4) 等组合都产生相同的值,像 (2,4)、(3,5)、(4,6)、等等等等。

    关于php - 区间内数字之间的接近度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11042735/

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