Задача про балансировщик запросов

Дано

Список серверов, которые обрабатывают запросы. Каждый сервер имеет “вес”:

Сервер Вес
Сервер 1 70
Сервер 2 55
Сервер 3 30

Чем больше “вес”, тем больше запросов может обработать сервер.

Задача

Распределить запросы по серверам в зависимости “веса” сервера.

PHP-код

<?php

$servers = [
    ['Сервер 1', 70],
    ['Сервер 2', 55],
    ['Сервер 3', 30],
];

$pickServer = function () use ($servers) {
    // Поиск и выбор подходящего сервера
    return $servers[0][0];
};

$stat = [];

for($query = 0; $query < 10000; $query += 1) {
    $serverName = $pickServer();
    $stat[$serverName] = ($stat[$serverName] ?? 0) + 1;
}

ksort($stat);
print_r($stat);

Правильный результат работы:

Array
(
    [Сервер 1] => 4563
    [Сервер 2] => 3490
    [Сервер 3] => 1947
)

Результат может меняться при каждом запуске, но не сильно.

Хорошая задача, мне понравилась. Оставлю отзыв!