3v4l.org

run code in 300+ PHP versions simultaneously
<?php $letters = ['A' => 8, 'B' => 16, 'C' => 15, 'D' => 4, 'E' => 1]; var_export( randomPairs($letters) ); function randomPairs(array $letters, array $result = []): array { if (count($letters) < 2) { $result['unpaired'] = $letters; return $result; } $keys = array_rand($letters, 2); shuffle($keys); $result['paired'][] = $keys[0] . $keys[1]; --$letters[$keys[0]]; --$letters[$keys[1]]; return randomPairs(array_filter($letters), $result); }

preferences:
34.96 ms | 402 KiB | 5 Q