@avtorlego

Как равномерно распределить массивы между пользователями?

Имеется массив с N массивами, имеются пользователи с user_id
Пример user_id: 556780960

Мне нужно как-то присваивать списки пользователям, у каждого пользователя должен быть один из N списков, который не должен меняться в случае повторного присвоения
Если бы массивов было всего два, то можно было бы через %2 получать, проверяя остаток от деления, но можно ли так же как-то просто с любым количеством массивов?
  • Вопрос задан
  • 81 просмотр
Пригласить эксперта
Ответы на вопрос 1
dollar
@dollar
Делай добро и бросай его в воду.
Как-то так:
spoiler
//v1.0
function arr_num($user_id) {
  static $N = 10;
  return $user_id % $N;
}

Когда количество списков снова возрастёт, чтобы назначенные не менялись:
spoiler
(при условии, что user_id задан через auto_increment)
//v2.0
function arr_num($user_id) {
  static $N = 100;
  if ($user_id < 556780960) { //old algorithm v1.0
    return $user_id % 10;
  }
  return $user_id % $N;
}
Хотя будет не совсем равномерно в целом, но дальше уже начинается больше математика, чем программирование.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы