gpt4 book ai didi

php - 如何制作轮询?或者除了 Round Robin 之外还有更简单的方法吗?

转载 作者:行者123 更新时间:2023-11-29 05:35:41 25 4
gpt4 key购买 nike

我面临的问题是以何种方式如果出现如下示例的问题:

代码 1000、2000、3000、4000、5000

编号 1、2、3

========================================

这个:

身份证号码1有code 1000, 2000, 3000, 4000

身份证号码2有code 2000, 4000, 3000

身份证号码3有code 3000, 4000, 5000

========================================

当所有字段都连接起来时,每个ID都找到了相同的代码。从上面的示例中,我想产生公平的结果并调整到它之前在每个 ID 上的代码,如下所示:(在一组 ID 上产生公平的代码)

========================================

成为:

身份证号码 1 有代码 1000、2000(1000 必须在号码 1 上,因为只有它比其他号码有)

身份证号码2有code 3000, 4000

身份证号码 3 有代码 5000(5000 必须在号码 3 上,因为只有它比其他号码有)

========================================

有人说用Round Robin,但是我从来没有听说过Round Robin,也不知道怎么用,脑子一片空白。是否有另一种更简单的方法,比如使用 PHP?我迷路了。

谢谢。

============================================= ==============

解释:

我正在制作一个应用程序,其中每个用户都有一个预定义的代码并且没有相同的代码。例如,用户 A 的代码范围在 1000-1500 之间,用户 B 的代码范围在 1600 到 2000 之间。用户 C 的代码范围在 1300-1550 之间。如我们所见,A 上的代码中包含的 C 上的代码距离(A -> 1000-1500,C -> 1300-1550)肯定会在两个用户之间重复。有了这个条件,怎么分离和划分才更公平。令 C 有 1300,A 有 1301,C 有 1302 等等,直到 1500。

我以为我之前举的这个简单的例子还挺能看懂的,结果好像乱七八糟,我的错。

最佳答案

$codes = array(1000, 2000, 3000, 4000, 5000);

// set up the receiving "containers"
$ids = array(
array(),
array(),
array(),
);

$n_ids = count($ids);
$i = 0;

foreach ($codes as $code) {
// use ($i % $n_ids) to distribute over $n_ids containers
$ids[$i % $n_ids][] = $code;
++$i;
}

print_r($ids);

输出:

Array
(
[0] => Array
(
[0] => 1000
[1] => 4000
)

[1] => Array
(
[0] => 2000
[1] => 5000
)

[2] => Array
(
[0] => 3000
)

)

这个问题是一个简单的分发任务:将 N 件元素分发到 M 个容器上。

对于每个 i (0 <= i <N) 你选择一个容器来放置项目 N[i]在;选择是通过使用以下表达式完成的:i mod M (i modulo M).

这个表达式可以称为循环法,因为它是这样循环的:

i    :  0  1  2  3  4
i % M: 0 1 2 0 1

更快

array_chunk 函数也执行此任务,但我认为您希望首先了解问题。此外,array_chunk 会产生稍微不同的结果。

$ids = array_chunk(array(1000, 2000, 3000, 4000, 5000), round(count($codes) / 3));

输出:

Array
(
[0] => Array
(
[0] => 1000
[1] => 2000
)

[1] => Array
(
[0] => 3000
[1] => 4000
)

[2] => Array
(
[0] => 5000
)

)

关于php - 如何制作轮询?或者除了 Round Robin 之外还有更简单的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10867922/

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