gpt4 book ai didi

php - 使用 PHP,随机配对一组项目,不与自身配对,不直接配对

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

假设您在数组中有一组项目。

A、B、C、D、E、F、G、H

使用 PHP,您如何将字母随机配对在一起而不将它们与它们自身的副本配对?

例如:

 A->pairedLetter = G
B->pairedLetter = C
C->pairedLetter = E
D->pairedLetter = A
E->pairedLetter = B
F->pairedLetter = D
G->pairedLetter = F

等等……

编辑:哦,还有,如果 A 与 F 配对,则 F 不能与 A 配对。因此,必须有与项目一样多的关系。

最佳答案

这个呢?

// input array
$arr = array('A','B','C','D','E','F');
// result array
$res = array();
// get first element and save it
$first = $ele1 = array_shift($arr);
while(count($arr)) {
// get random element
$ele2 = array_rand($arr);
// associate elements
$res[$ele1] = $arr[$ele2];
// random element becomes next element
$ele1 = $arr[$ele2];
// delete the random element
array_splice($arr, $ele2, 1);
}
// associate last element woth the first one
$res[$ele1] = $first;

print_r($res);

输出:

Array
(
[A] => B
[B] => F
[F] => E
[E] => D
[D] => C
[C] => A
)

适用于偶数个元素数组以及奇数个元素数组。

更新,使用 Chris 的算法:

$arr = array('A','B','C','D','E','F');
shuffle($arr);
$res=array();
for($i=0;$i<count($arr);$i++) {
$res[$arr[$i]] = $arr[$i+1];
}
$res[$arr[count($arr)-1]] = $arr[0];

关于php - 使用 PHP,随机配对一组项目,不与自身配对,不直接配对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3758223/

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